忍者ブログ
妄想・想像・創造
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

言われてみれば、「あ~」って感じ。
VBのフォームは『グローバル変数』
つまり、
Form1.Show
って、どこでも書ける。
この所為で、落とし穴に嵌った。
実は、VBのUnloadって奴。メモリから全てが消えてしまうと
思っていたのだが、どうもそうではないらしい。
Formsコレクションから消えるだけで、インスタンスが初期化されるわけではない。
例えば、こんなフォームがあって、
// Form1内
Private m_strValue As String
Public Property Let Item (value As String)
 m_strValue = value
End Property
Private Sub Form_Load()
 MsgBox m_strValue
End Sub

Form1.Item = "黒幕"
Form1.Show
Unload Form1
Form1.Show

ってすると、メッセージボックスが2回表示され、2回とも「黒幕」と表示される。

じゃ、どうしたらいいのん?

Form1.Item = "黒幕"
Form1.Show
Set Form1 = New Form1
' こっちでもOK
' Set Form1 = Nothing
Form1.Show

まぁ、ちゃんと、インスタンス化しようってことです。
ちなみに、俺は、Showする前にNewするやり方が好き
Set Form1 = New Form1
Form1.Show

拍手

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
» この方法だと
newでインスタンスを生成する方法ですとおそらくメモリの開放は行わずに新たなインスタンスに焦点があっているだけのような気がしますが、意図されていることとあってますでしょうか?
gor 2007/05/07(Mon)23:52:10 編集
» Re:この方法だと
gorさんのおっしゃる通り、焦点は「インスタンス生成」、つまり、Form1の初期化です。
確かに、冒頭では、メモリ開放にちょっと触れてるので、繋がりがないですよね(苦笑

メモリ開放に関しては、
Set Form1 = Nothing
で、良いと思ってます。

そういえば、書き忘れましたが、フォームの「×」ボタンだと
Set Form1 = Nothing
と、同じ効果だった気がします。

VBおそるべし・・・
2007/05/08 00:20
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
最新CM
[09/26 gor]
[09/26 gor]
[05/17 gor]
[05/09 RX-78/C.A]
[05/07 gor]
プロフィール
HN:
編集長 黒幕
性別:
非公開
自己紹介:
京阪奈を中心に活動する自称ストリートミュージシャン。
目標は、唄って踊れる、さらに、ゴルフも上手い、さらに
字も綺麗なアーティスト。
最近、MCや物販が一人歩きで有名になり、
実際、唄うと
「あ~、この人唄えるんだぁ~」
みたいな目で見られることが多い。

また、スタッフと間違われること多し。
「あっ、ドリンク頼んで良いですか!」
ブログ内検索
カウンター
フリーエリア

Copyright © [ 黒幕編集部 ] All rights reserved.
Special Template : 忍者ブログ de テンプレート and ブログアクセスアップ
Special Thanks : 忍者ブログ
Commercial message : [PR]