テキストボックスをプログラムで作成するには?

解決


Tぽん  2004-06-10 14:02:59  No: 113878  IP: [192.*.*.*]

VB6.0でテキストボックスをプログラムで作成したいんですけど・・・どうしたらよいでしょう?

編集 削除
nanashi  2004-06-10 14:44:10  No: 113879  IP: [192.*.*.*]

使ったこと無いけど↓とか?

Private WithEvents txtTest As VB.TextBox

Private Sub Command1_Click()
    
    Set txtTest = Me.Controls.Add("VB.TextBox", "Test1")
    txtTest.Visible = True
End Sub

編集 削除
特攻隊長まるるう  2004-06-10 14:52:39  No: 113880  IP: [192.*.*.*]

ボクも使ったこと無いですがw
成功してらっしゃる方↓はいますのでどうにかなるかと。

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200405/04050098.txt

編集 削除
Say  2004-06-10 18:47:56  No: 113881  IP: [192.*.*.*]

もし、「コントロールの動的生成」ではなく
コードでコントロール(ウィンドウ)を作成したいのなら
こんな感じ?
(手抜きサンプルです。非実用的だし。)

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の世界じゃない・・・。

編集 削除
Tぽん  2004-06-24 13:40:09  No: 113882  IP: [192.*.*.*]

ばっちり出ました!!ありがとうございました。

編集 削除