VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 コントロール共通関係のメニュー
1.主要プロパティについて
2.オブジェクトの表示/非表示状態を切り替える
3.コントロールをプログラム実行時に作成する
4.現在アクティブなコントロール及び直前アクティブだったコントロールを取得
5.フォーム上のすべてのコントロールのプロパティ値を一度に設定
6.コントロールを WindowsXP スタイルで表示する
7.円形・多角形のフォーム・コントロール・ピクチャーを作成する
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


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

 controlcommon02_01.gif

下記は、掲示板に回答された分です、他人のサンプルを実際に色々試して見るのもいい勉強になります。
実行時に作成したコントロールのイベントの処理の事まで考慮して作成されているものや、イベントは必要がないのかイベントを作成されていないものや後で追加できるように工夫されたもの等色々ありますので、実際に試し、色々設定を変更して自分なりに改良して見て下さい。

このページのトップへ移動します。 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.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
コントロールを実行時に作成する コントロールの動的生成 コントロールを動的に作成する方法
イベントの作成



このページのトップへ移動します。