§1 テキストエディタの制作 VB6 | |
(6) 置換機能の追加 U |
2. エディタに置換機能を追加
フォームの追加
テキストエディタのプログラムを呼び出す。検索文字列や置換文字列を入力するためのフォームを追加する。
文字列を一つだけ入力するのであれば、InputBox関数(ヘルプ参照)が使えるが、ここではフォーム上にテキストボックスなどを配置して入力することにする。
フォームの追加はメニューバーから次のように選択する。
[プロジェクト(P)] → [フォームモジュールの追加(F)]
ダイアログから「フォームモジュール」を選択し、開くボタンをクリックする。追加したフォームはForm3となる。
図1-8-2 |
フォーム(MaxButton=False, MinButton=False)には、ラベル2個、テキストボックス2個、ボタン2個、オプションボタン2個を配置する(図1-8-2)。オプションボタンの一つ目(Option1)のValueプロパティをTrueに設定する。
Form3(置換ウィンドウ)のプログラムリスト
キャンセルボタン(Command2)がクリックされたとき、フォームをアンロードして閉じるので、UnLoad Meだけでよい。
Form3の置換は、次のような流れで処理をすることになる。
プログラムリスト
【Form3】 Dim pt As Integer '検索文字列を発見した位置 Private Sub Command1_Click() Dim ret As VbMsgBoxResult If Len(Text1.Text) = 0 Then '検索文字列なし Exit Sub '何もしない End If KENSAKUMOJI = Text1.Text '検索文字列をグローバル変数に代入 If Option1.Value = True Then 'カーソル位置から検索 'カーソル位置に選択されている文字長を加算 '+1は0からカウントしているため pt = Form1.Text1.SelStart + Form1.Text1.SelLength + 1 Else pt = 1 '先頭から Option1.Value = True '2回目からはカーソル位置 End If pt = InStr(pt, Form1.Text1.Text, Text1.Text) '検索 If pt = 0 Then '見つからなかった MsgBox "検索文字列は見つかりませんでした。" Else '見つかった '範囲選択 Form1.Text1.SelStart = pt - 1 Form1.Text1.SelLength = Len(Text1.Text) '置き換え確認 ret = MsgBox("文字列を置き換えますか?", vbYesNo, "置換確認") If ret = vbYes Then '置き換え・範囲選択 Form1.Text1.SelText = Text2.Text Form1.Text1.SelStart = pt - 1 Form1.Text1.SelLength = Len(Text2.Text) End If End If End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Text1_Change() '検索文字列が変更されたとき pt = 1 '1文字目から検索 End Sub
Form1のmnuReplace_Clickプロシージャは省略する。 (↓ヒント)
Form3のウィンドウはForm1の置換(E)を選択したときに表示させる。
Form1の置換(E)メニューを選択するとmnuReplace_Clickプロシージャが呼び出されるので、mnuReplace_Clickプロシージャには置換ウィンドウ(Form3)を呼び出す命令を書くだけで良い(検索を参照のこと)。
(6) 置換機能の追加 U | |
Copyright © 2001,2002 Hiroshi Masuda |