[リストへもどる]
一括表示

投稿時間:2003/01/14(Tue) 15:48
投稿者名:裕治
Eメール:nagai@kun.love2.ne.jp
URL :
タイトル:
実行時、コントロールの生成
[開発環境:Windows2000,VisualBasic6.0]
[データベース:Access2000]

お疲れ様です。
現在VB6.0で画面を作成しています。
VB6.0でコントロールを生成する関数・メソッド等は存在するのでしょうか?
もし存在するのならば、サンプルソース等Web上に転がっています?
もしどなたかご存知の方がいらっしゃれば、ご教授の方よろしくお願いいたします。

投稿時間:2003/01/14(Tue) 15:56
投稿者名:A221
Eメール:
URL :
タイトル:
Re: 実行時、コントロールの生成
> [開発環境:Windows2000,VisualBasic6.0]
> [データベース:Access2000]
>
> お疲れ様です。
> 現在VB6.0で画面を作成しています。
> VB6.0でコントロールを生成する関数・メソッド等は存在するのでしょうか?
> もし存在するのならば、サンプルソース等Web上に転がっています?
> もしどなたかご存知の方がいらっしゃれば、ご教授の方よろしくお願いいたします。

昔手遊びに作ったものでよければどうぞ。
フォームにコピペして貼ってください。
'------------------------------------------------
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

投稿時間:2003/08/16(Sat) 10:38
投稿者名:yuko
Eメール:
URL :
タイトル:
Re^2: 実行時、コントロールの生成
いきなりですいません!!

A221さんのソースをちょっと変えて、
コマンドボタンを次々フォームに貼り付けられるようにしたんですが、
そのコマンドボタンをクリックしたときの処理ってゆうのはできないんでしょうか??

addcmd(0)とかがオブジェクト名になっていると思うのですが…??

お願いします。

投稿時間:2003/08/16(Sat) 20:26
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 実行時、コントロールの生成
> A221さんのソースをちょっと変えて、
> コマンドボタンを次々フォームに貼り付けられるようにしたんですが、
> そのコマンドボタンをクリックしたときの処理ってゆうのはできないんでしょうか??

どのように変更されたのでしょうか?
多分、配列では作成されていないはずですが?
ヘルプでWithEvents キーワードを調べて見て下さい。
複数表示されても最後に作成したものしか有効になっていないかと思います。
但し、作成したコードにもよると思いますが。

次から、新たなスレッドを立てて質問して下さい。このままでは、ややこしいので

投稿時間:2003/08/26(Tue) 18:05
投稿者名:おじさん
Eメール:
URL :
タイトル:
Re^3: 実行時、コントロールの生成
> いきなりですいません!!
>
> A221さんのソースをちょっと変えて、
> コマンドボタンを次々フォームに貼り付けられるようにしたんですが、
> そのコマンドボタンをクリックしたときの処理ってゆうのはできないんでしょうか??
>
> addcmd(0)とかがオブジェクト名になっていると思うのですが…??
>
> お願いします。


同一コントロールを複数(不定)作成したい場合には、最初に作成したコントロールのINDEXを設定して
その後はLOADでコントロールの複製を作成できます

簡単な方法は最初にコマンドボタンを1つ作成してIndexを「0」にして
コマンドボタンがクリックされたら「load command1(ubound(command1)+1)」で次のIndexの
コントロールを作成できますよ

helpでLOADを9検索してみてください

投稿時間:2003/08/27(Wed) 10:33
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^4: 実行時、コントロールの生成
> 簡単な方法は最初にコマンドボタンを1つ作成してIndexを「0」にして
> コマンドボタンがクリックされたら「load command1(ubound(command1)+1)」で次のIndexの
> コントロールを作成できますよ

実は『コントロール配列』は「配列」ではないので、UBound関数は使えなかったりします。
"配列"という用語が使われているのややこしいですが、これは一種のコレクションオブジェクトです。

ですから、UBound関数の替わりにUBoundメソッドを使って
   Load Command1(Command1.UBound + 1))
のように書く事になります。

なお、Loadした直後のコントロールは、通常、非表示になっています。
必要に応じて、VisibleプロパティやMoveメソッドなどを使って、
表示位置の調整等を行ってください。

投稿時間:2003/01/14(Tue) 17:45
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 実行時、コントロールの生成
ヘルプで Add メソッド (Controls コレクション) の使用例 を検索して見て下さい。
サンプルと詳しい解説が載っています。