- - PR -
フレームとフレーム内のオプションボタンを動的に追加できない
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-24 11:15
OS:WindowsXP,
アプリ:Visual Basic 6.0(SP6) いつもお世話になっております。 フレーム内にオプションボタンが二つ有り、動的に追加していく処理を作ってます。 フォーム上に、三つのコントロールを配置してます。コントロール名は下記の通りです。 フレーム:fraName(0) オプションボタン:optAll(0),optObject(0) 以下にコードを書きます。 Private Sub Command1_Click() Load fraName(1) fraName(1).Top = 4000 fraName(1).Left = 4000 fraName(1).Visible = True Load optAll(1) optAll(1).Top = 120 optAll(1).Left = 120 optAll(1).Visible = True End Sub 実行するとfraName(0)の中にoptAll(1)が追加されます。fraName(1)の中に追加したいのですが、うまくいきません。 色々調べて、ユーザーコントロールにしたり、三つのコントロールをグループに纏めようとしたりしましたが、結局全て途中で行き詰まりました。 ヒントになりそうなことをご存知でしたら、ご教示下さい。 検索しましたが、過去ログなどですでに話題になっていましたら、申し訳ありません。 宜しくお願い致します。 | ||||
|
投稿日時: 2006-10-24 11:55
一言で言えば、Parent が fraName(0) のままになっているからです。 実行時に Parent を変更するには、Windows API の SetParent 関数を使うことになります。 今の実装のまま、進めるという前提での回答です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-10-24 11:59
じゃんぬねっと様、早速の返事ありがとうございます。
SetParent 関数を調べて修正します。 修正後の結果を報告致します。 | ||||
|
投稿日時: 2006-10-24 13:36
じゃんぬねっと様の御指摘の通り、SetParent関数を使いました。
下記の2行を追加すると思い通りの処理ができました。 SetParent optAll(1).hWnd, fraName(1).hWnd SetParent optObject(1).hWnd, fraName(1).hWnd ありがとうございました。 これでコントロール配列にしてFor文の中で、コントロールを配置しようと思いましたが、 フレーム、オプションボタン、ラベル等をグループ化して、配置するほうが処理的に良いのかなと考えました。 グループ化の方法や、違った良い方法をご存知でしたら、ご教示下さい。 宜しくお願い致します。 | ||||
|
投稿日時: 2006-10-24 13:43
最初に出ていた 「ユーザーコントロール」 でしょう。 私は 「コントロール配列」 が嫌いなので、厳密な名前をつけて普通に配置します。 表組みのイメージであれば、使うことも考えますが、たいてい Grid 系のコンポーネントを使いますね。 # 使用用途がわからないので、何とも言えませんが。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-10-24 14:01
じゃんぬねっと様ありがとうございます。
昨日はユーザーコントロールを使用しようとしてました。 UserControl:UserControl1 下記の四つのコントロールをユーザーコントロール内で纏めてました。 Frame:fraName OptionButton:optAll OptionButton:optObject Label:lblKyoku フォーム上にUserControl1を、オブジェクト名:udtSelectとして配置し、 udtSelect.optAll.Value = Trueのような処理をしようとしても、うまくいかず、あきらめました。 UserControl1.optAll.Value = Trueとしてもダメでした。 ユーザーコントロールの知識が無さ過ぎてお恥ずかしいですが、御指摘できる範囲で構いませんので、宜しくお願い致します。 | ||||
|
投稿日時: 2006-10-24 14:09
UserControl に、そのコントロールのインスタンスを返す Public プロパティを追加しましょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-10-24 14:14
じゃんぬねっと様、お忙しいところ本当にありがとうございます。
早い返事の為手が止まらず助かります。 UserControl に、コントロールのインスタンスを返す Public プロパティを追加するのですね。私しのレベルでは、難しいようですが、挑戦してみます。また結果を報告致します。 |