§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 

 

 

inserted by FC2 system