フォーム上のボタン。

解決


qp  2005-08-09 19:03:17  No: 91377

vb6です。

フォーム上にボタンを配置しています。

Private Sub Form_Load()
    Debug.Print Me.Command1.Caption
    Debug.Print Command1.Caption
End Sub

フォーム上のボタンを参照する場合
'Me.'とつけるほうがいいのでしょうか?


いな  2005-08-09 19:07:39  No: 91378

Meでなくても、Form名でもいいと思います。
Debug.Print Form1.Command1.Caption

複数のFormを持つEXEの場合なども考慮するとつけた方がいい


qp  2005-08-09 19:11:01  No: 91379

コードのわかりやすさからいえば、フォーム名をつけたほうがよさそうですね。
ありがとうございました。


ガッ  2005-08-09 19:18:22  No: 91380

既に解決しているので、横から書くのは大変失礼かもしれませんが、

> コードのわかりやすさからいえば、フォーム名をつけたほうがよさそうですね。
これに関しては、私は同意しかねます。
Form1はオブジェクト変数であるので、
"Form1のインスタンスの中で、インスタンス自身を示すオブジェクト変数ではない"からです。

※特に理由がない場合、キーワード:Meを使った方がいいかと思います。


qp  2005-08-09 19:22:01  No: 91381

>"Form1のインスタンスの中で、インスタンス自身を示すオブジェクト変数ではない"からです。
そうですね。
ありがとうございました。


ねろ  2005-08-09 20:58:06  No: 91382

>※特に理由がない場合、キーワード:Meを使った方がいいかと思います。
そして殆どこのような場合のMeは省略されます。(^^;

Meを使う場合としてMSDNを次のキーワードで参照してください。
"Me キーワード"
"Me キーワードのコード例"

MSDNで"Form1.Visible"で検索すると、特に理由も無しに、
Form1.Visible = False なんてのが、がさがさ出てくる。
もちろんMe.Visible = Falseも出てくる。 
従ってMeでもForm1でもどちらでも良いのでは、と思うのですが。
Form1.Visible = False
Form2.Visible = False
Form3.Visible = False
なんて書く場合は、見た目の綺麗さで、Form1かな。
Unload Me
これはMeだな。


LESIA  2005-08-09 22:32:09  No: 91383

Meを使う利点として、フォーム名を変更した場合でもコードを
書き直す必要がないことですね。

例えば
Form1.Visible = False
と書いた場合、もしフォーム名をfrmMainに変更したとすると
frmMain.Visible = False
と書き直さなければなりません。

ところが、
Me.Visible = False
と書いた場合は、フォーム名を変更してもコードを書きなおす
必要がありません。


Geo=TK3  2005-08-09 23:52:58  No: 91384

>ところが、
>Me.Visible = False
>と書いた場合は、フォーム名を変更してもコードを書きなおす
>必要がありません。

それだけではなく例えば

Dim frm As Form1
Set frm = New Form1
frm.Show

というコードでフォームを表示させた場合、Form1 内部で

Form1.Visible = False

というコードが書かれてると、その時点で新たに Form_Load が走ったり、意図しない動作をしたりします。
# 実際、それではまった事も過去に数回 (^^;; 。

VB6.0 では明示的にこういうコードで Form を表示する事はあまりやらないのかもしれませんが、上記のような事を考えると自フォームをあらわす時にキーワード Me 以外を使う事はお勧め出来ません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加