3.コントロールをプログラム実行時に作成する |
1.コントロールを実行時に作成する 2.実行時、コントロールの生成 - A221 (サンプル投稿用掲示板に投稿分) 3.コントロールの動的配置とそれぞれの制御 - nanashi (サンプル投稿用掲示板に投稿分) 4.コントロールの自動作成 - とろ (サンプル投稿用掲示板に投稿分) 5.マウスクリックでテキスト作成 - 川島 (サンプル投稿用掲示板に投稿分) 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.コントロールを実行時に作成する |
Option Explicit 'SampleNo=099 WindowsXP VB6.0(SP5) 2002.05.19 Private Sub Command1_Click() 'コンテナーを指定して配置 Set Text1(2).Container = Frame1 Text1(2).Top = 350 Text1(2).Left = 700 End Sub Private Sub Form_Load() 'コントロールを実行時に作成する Dim i As Integer For i = 1 To 5 Load Text1(i) With Text1(i) .Move 200, Text1(0).Top + (Text1(0).Height + 200) * i, _ Text1(0).Width, Text1(0).Height .Visible = True End With Next i End Sub Private Sub Text1_GotFocus(Index As Integer) Text1(Index).BackColor = QBColor(1) '青 Text1(Index).ForeColor = QBColor(15) '白 End Sub Private Sub Text1_LostFocus(Index As Integer) Text1(Index).BackColor = QBColor(15) '白 Text1(Index).ForeColor = QBColor(0) '黒 End Sub 下記は、掲示板に回答された分です、他人のサンプルを実際に色々試して見るのもいい勉強になります。 実行時に作成したコントロールのイベントの処理の事まで考慮して作成されているものや、イベントは必要がないのかイベントを作成されていないものや後で追加できるように工夫されたもの等色々ありますので、実際に試し、色々設定を変更して自分なりに改良して見て下さい。 |
2.実行時、コントロールの生成 - A221 (サンプル投稿用掲示板に投稿分) |
------------------------------------------------------------------------------------ Re: 実行時、コントロールの生成 - A221 2003/01/14-15:56 No.2157 ------------------------------------------------------------------------------------ 昔手遊びに作ったものでよければどうぞ。フォームにコピー・アンド・ペーストして貼ってください。 '------------------------------------------------ Option Explicit Private WithEvents btnObj As CommandButton Private addlabel As Label Private counter As Long Private Sub btnObj_Click() 'クリックでコントロールを動的に追加 counter = counter + 1 Set addlabel = Controls.Add("VB.Label", "addLabel" & counter, Form1) With addlabel .Move 0, counter * 200, 1000, 200 .Caption = "count" & counter .Visible = True End With End Sub Private Sub Form_Load() '一番最後のFormが追加したいコンテナー Set btnObj = Controls.Add("VB.CommandButton", "btnObj", Form1) With btnObj .Caption = "test" .Move Form1.Width - 1000, Form1.Height - 1000, 500, 500 .Visible = True End With Set addlabel = Controls.Add("VB.Label", "addLabel" & counter, Form1) With addlabel .Caption = "count" & counter .Move 0, 0, 1000, 200 .Visible = True End With End Sub |
3.コントロールの動的配置とそれぞれの制御 - nanashi (サンプル投稿用掲示板に投稿分) |
------------------------------------------------------------------------------- Re: コントロールの動的配置とそれぞれの制.. - nanashi 2003/12/12-17:45 No.7103 ------------------------------------------------------------------------------- 動的な配置などはやったことないですけど、以下のようにしたら動きました。 Option Explicit Private WithEvents myCmd1 As CommandButton Private WithEvents myCmd2 As CommandButton Private WithEvents myCmd3 As CommandButton Private Sub myCmd1_Click() MsgBox "おはようございます" End Sub Private Sub myCmd2_Click() MsgBox "こんにちは" End Sub Private Sub myCmd3_Click() MsgBox "おやすみなさい" End Sub Private Sub Form_Load() Dim sBuff As String Dim i As Integer Dim btnObj As CommandButton For i = 1 To 3 Select Case i Case 1 Set myCmd1 = Controls.Add("VB.CommandButton", "myCmd" & i) Set btnObj = myCmd1 sBuff = "朝" Case 2 Set myCmd2 = Controls.Add("VB.CommandButton", "myCmd" & i) Set btnObj = myCmd2 sBuff = "昼" Case 3 Set myCmd3 = Controls.Add("VB.CommandButton", "myCmd" & i) Set btnObj = myCmd3 sBuff = "夜" End Select With btnObj .Visible = True .Width = 2000 .Top = i * 500 .Left = 500 .Height = 500 .Caption = sBuff End With Set btnObj = Nothing Next i End Sub |
4.コントロールの自動作成 - とろ (サンプル投稿用掲示板に投稿分) |
----------------------------------------------------------------- Re: コントロールの自動作成 - とろ 2004/03/22-16:52 No.8466 ----------------------------------------------------------------- VB6 以前ならば次のような感じ。 Text1, Text2, Command1 をフォーム上に配置して、下のコードを実行して下さい。 # デザイン時に Text2 の Index は 0 にしておいて下さい。 Text1 に数値(質問の場合、レコード数)を入力して、ボタンを押すとその数だけ Text2 が作成されます。 '---------------------------------------- Option Explicit Private Sub Command1_Click() Dim i As Integer For i = 1 To Text2.UBound Unload Text2(i) Next i For i = 1 To CInt(Text1.Text) Load Text2(i) With Text2(i) .Top = (Text2(0).Height + 30) * i .Visible = True End With Next i End Sub Private Sub Form_Load() Text2(0).Visible = False Text1.Text = "10" End Sub |
5.マウスクリックでテキスト作成 - 川島 (サンプル投稿用掲示板に投稿分) |
---------------------------------------------------------------------------- Re^6: 解決しました。ありがとうございます.. - 川島 2004/04/12-15:52 No.8652 ---------------------------------------------------------------------------- kamurinさんサムさんご協力ありがとうございました。m(_ _)m とりあえず完成いたしました。 Dim MusX As Single Dim MusY As Single Dim Index As Integer 'テキストボックスの数form_Loadとかで初期化 Private Sub Form_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) MusX = X MusY = Y End Sub Private Sub Form_Load() Index = 1 Text1(Index - 1).Visible = False End Sub Private Sub Form_Click() 'クリックした時に、テキストボックスを作成 If Index > 1 Then Load Text1(Index - 1) '2つ目以降なら作る End If Text1(Index - 1).Visible = True 'クリック位置に移動 Text1(Index - 1).Top = MusY Text1(Index - 1).Left = MusX Index = Index + 1 End Sub ほとんどkamurinさんの写しですが(笑)本当に助かりました。 |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
コントロールを実行時に作成する コントロールの動的生成 コントロールを動的に作成する方法 イベントの作成 |