VB6.0でテキストボックスをプログラムで作成したいんですけど・・・どうしたらよいでしょう?
編集 削除使ったこと無いけど↓とか?
Private WithEvents txtTest As VB.TextBox
Private Sub Command1_Click()
Set txtTest = Me.Controls.Add("VB.TextBox", "Test1")
txtTest.Visible = True
End Sub
ボクも使ったこと無いですがw
成功してらっしゃる方↓はいますのでどうにかなるかと。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200405/04050098.txt
もし、「コントロールの動的生成」ではなく
コードでコントロール(ウィンドウ)を作成したいのなら
こんな感じ?
(手抜きサンプルです。非実用的だし。)
Option Explicit
Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Private Const ES_RIGHT = &H2&
Private Const BS_PUSHBUTTON = &H0&
Private Const BS_RIGHT = &H200&
Private Const BS_BOTTOM = &H800&
Private Const LBL_LABEL1 As Long = 1000& 'スタティックのID
Private Const TXT_TEXT1 As Long = 1010& 'エディトボックスのID
Private Const CMD_CLOSE As Long = 1020 'えんどボタンのID
Private Declare Function CreateWindowEx Lib "user32" _
Alias "CreateWindowExA" _
(ByVal dwExStyle As Long, _
ByVal lpClassName As String, _
ByVal lpWindowName As String, _
ByVal dwStyle As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hWndParent As Long, _
ByVal hMenu As Long, _
ByVal HINSTANCE As Long, _
lpParam As Long) As Long
Dim hWnd_LBL_LABEL1 As Long
Dim hWnd_TXT_TEXT1 As Long
Dim hWnd_CMD_CLOSE As Long
Private Sub Form_Load()
Dim hInst As Long
Me.BackColor = &HFFFFFF
Me.Show
hInst = App.HINSTANCE
'らべるを作る
hWnd_LBL_LABEL1 = CreateWindowEx(0&, "static", "Label1", _
WS_CHILD + WS_VISIBLE, _
30, 10, 100, 18, Me.hWnd, _
LBL_LABEL1, hInst, 0&)
'えでぃとぼっくすを作る
hWnd_TXT_TEXT1 = CreateWindowEx(0&, "EDIT", "Text1", _
WS_CHILD + WS_VISIBLE + _
ES_RIGHT, _
30, 40, 200, 50, Me.hWnd, _
TXT_TEXT1, hInst, 0&)
'えんどぼたんを作る
hWnd_CMD_CLOSE = CreateWindowEx(0&, "BUTTON", "えんど", _
WS_CHILD + WS_VISIBLE + BS_PUSHBUTTON _
+ BS_RIGHT + BS_BOTTOM, _
130, 120, 100, 50, hWnd, _
CMD_CLOSE, hInst, 0&)
Me.Refresh
Me.BackColor = &HC0C0C0
End Sub
このままではボタン押しても何も起きません。
イベント(Window Message)拾うにはサブクラス化するか、
LoopでPeekMessageする必要があります。
Formもコードで作成したいなら、もうちょっと長くなります。
ってもうVBの世界じゃない・・・。
ばっちり出ました!!ありがとうございました。
編集 削除