§1 テキストエディタの制作 VB6 | |
(5) 検索機能の追加 V |
「次を検索(N)」メニューの処理を考える。「次を検索(N)」は、「検索(F)」メニューで入力した検索文字列をそのまま使って、次の一致する文字列を探すことである。
ここで問題は、「次を検索(N)」メニューはエディタ本体(Form1)で、検索文字列は追加したフォーム(Form2)にある。Form1からForm2の変数(検索文字列)を参照する必要がある。すなわち、Form1でもForm2でも共通で使える変数を用意する必要がある。
6. フォーム間で共通に使える変数のサンプル
図1-5-5 |
図1-5-5のように、新規フォームを用意し、さらにもう一つフォームを用意する。Form1で関数の内と外で一つずつ変数を宣言し、初期値を設定する。Form1のボタンをクリックするとForm2を呼び出すようにする。
Form2も関数の内と外で一つずつ変数を宣言し、初期値を設定する。
Form2のボタンをクリックするとForm1とForm2の計4個の変数の値を表示する。
Option Explicit の宣言が自動的に入るようになっている場合は、削除しておく。
・プログラムリスト
【Form1】 Dim F1GD As String 'Form1全体で有効な変数 Private Sub Command1_Click() Form2.Show 1 End Sub Private Sub Form_Load() Dim F1FL As String 'プロシージャ内だけで有効菜変数 F1GD = "Form1 Load" '初期設定 F1FL = "Form1 Load" End Sub
【Form2】 Dim F2GD As String 'Form2全体で有効な変数 Private Sub Command1_Click() Label1.Caption = "F1GD=" & F1GD '結果表示 Label2.Caption = "F1FL=" & F1FL Label3.Caption = "F2GD=" & F2GD Label4.Caption = "F2FL=" & F2FL End Sub Private Sub Form_Load() Dim F2FL As String 'プロシージャ内だけで有効菜変数 F2GD = "Form2 Load" '初期設定 F2FL = "Form2 Load" End Sub
結果は、Form2の変数F2GDの値だけが表示される。すなわち、Form1の関数内と外で宣言した変数は、別のフォーム(Form2)からは参照できない。
解決方法
標準モジュールを追加して、Publicで変数を宣言する。
標準モジュールは、メニューバーから次のように選択して追加する。
[プロジェクト(P)] → [標準モジュールの追加(M)]
Form1の変数F1GDの宣言を削除して、標準モジュールで宣言する。
【Form1】 Dim F1GD As String '←削除する
【Module1】
Public F1GD As String '追加する
標準モジュールでPublic宣言した変数は、すべてのフォームで共通の変数として使うことができる。
(5) 検索機能の追加 V | |
Copyright © 2001,2002 Hiroshi Masuda |