§1 テキストエディタの制作 VB6
 (5) 検索機能の追加 W 前へ 目次へ 次へ 

 7. 「次を検索」機能を追加

検索文字列をグローバル変数に記憶

 これまでに作成したテキストエディタのプログラムを呼び出し、標準モジュールを追加する。標準モジュールに検索文字列を記憶するためのグローバル変数KENSAKUMOJIを宣言する。

【Module1】
Public KENSAKUMOJI As String    '検索文字列用

 検索文字列は、Form2(検索ウィンドウ)のText1オブジェクトに記憶されている。検索処理の中で検索文字列をグローバル変数KENSAKUMOJIに代入する命令を追加する。

【Form2】
Private Sub Command1_Click()
  If Len(Text1.Text) = 0 Then  '検索文字列なし
    Exit Sub    '何もしない
  End If
  KENSAKUMOJI = Text1.Text   '←検索文字列をグローバル変数に代入(追加)
  If Option1.Value = True Then  'カーソル位置から検索
    <<省略>>


「次を検索」の機能の組込み

 「次を検索」メニューを選択すると次のような流れで処理をすることになる。

1.検索文字列 あり→次(2.)へ、なし→終了(何もしないで処理を抜け出す)
2.検索開始位置を計算する。(カーソル位置または、範囲選択の次の文字位置から)
3.検索結果 一致文字列 あり→範囲選択で検索した文字列を示す。 なし→なしのメッセージ

 「次を検索」の処理は、「次を検索」のメニューをクリックしたときに行えばよいので、mnuNextFind_Click()プロシージャに書く(プログラムは、検索の処理と似ているので、比べてみること)。

・プログラムリスト

【Form1】
Private Sub mnuNextFind_Click()
    Dim pt As Integer

    If Len(KENSAKUMOJI) = 0 Then    '検索文字列なし(#1)
        Exit Sub    '何もしない
    End If
    pt = Form1.Text1.SelStart + Form1.Text1.SelLength + 1  '開始位置
    pt = InStr(pt, Text1.Text, KENSAKUMOJI)    '検索
    If pt = 0 Then        '見つからなかった
        MsgBox "検索文字列は見つかりませんでした。"
    Else                  '見つかった
        Text1.SelStart = pt - 1
        Text1.SelLength = Len(KENSAKUMOJI)
    End If
End Sub

 (#1) (検索)文字列のある/なしの判定は、@文字列の長さを調べる方法、A空文字と比較する方法がある。プログラムでは@の方法を使用している。Aの方法を使用すると次のようになる。

If KENSAKUMOJI = "" Then


【課題】 検索するときにアルファベットの大文字と小文字を区別する/しないを選択できる機能を追加する。


 (5) 検索機能の追加 W 前へ 目次へ 次へ 
Copyright © 2001,2002 Hiroshi Masuda 

 

 

inserted by FC2 system