フォーム上にTextコントロールを表形式に並べています。
その際の縦と横のTextコントロールの数はUpDownコントロールで
指定してから表の作成をしています。
その後、UpDownコントロールで表の縦もしくは横のサイズを
変更できるようにしたいのですが、
どのようにすればよいのでしょうか?
Textコントロールには文字を入力するため(1つのコントロールに
1文字です)それらは元の位置に残すようにしたいのです。
アドバイスをお願い致します。
開発環境:VB6(SP5), WinXP
それぞれのTextプロパティの取得方法は解決しているのですか?
#「・・指定してから表の作成をしています。」
#の部分のコードの提示がのぞましいです。
> #「・・指定してから表の作成をしています。」
> #の部分のコードの提示がのぞましいです。
Textプロパティの取得の部分のコーディングはまだ手をつけていません。
表のサイズ変更の個所を先にやっているからです。
UpDownコントロールとTextコントロールの配置のコードは以下の通りです。
Option Explicit
Private Sub Form_Load()
'タテ方向のますめの数
With UpDown1
.BuddyControl = txtTate
.BuddyProperty = "Text"
.SyncBuddy = True
.Max = 12
.Min = 3
.Increment = 1
.Value = 3
.Wrap = False 'True
End With
'ヨコ方向のますめの数
With UpDown2
.BuddyControl = txtYoko
.BuddyProperty = "Text"
.SyncBuddy = True
.Max = 16
.Min = 3
.Increment = 1
.Value = 3
.Wrap = False 'True
End With
End Sub
Private Sub cmdMakeMatrix_Click()
'Text1.textの大きさは600x600です。
Dim i As Integer
Dim cntTate As Integer
Dim cntYoko As Integer
For cntTate = 0 To txtTate.Text - 1
For cntYoko = 1 To txtYoko.Text
i = (txtYoko.Text * cntTate) + cntYoko
Call Load(Me.Text1(i))
Me.Text1(i).Text = i
Me.Text1(i).Top = Me.Text1(0).Top + 600 * cntTate
Me.Text1(i).Left = Me.Text1(0).Left + 600 * (cntYoko - 1)
Me.Text1(i).OLEDropMode = vbOLEDropManual
Me.Text1(i).Visible = True
Next cntYoko
Next cntTate
End Sub
> 動的配列でコントロールを追加するには?
「コントロール配列」は“コレクション”であって“配列”では無いので、
動的配列という呼び方は一般的ではないかも。
> フォーム上にTextコントロールを表形式に並べています。
TextBoxコントロールのことでしょうか?
リソース面や管理面などを考えると、複数のTextBox を並べるのではなく、
ひとつの表形式のコントロールを採用した方が良いと思いますよ。
> 'Text1.textの大きさは600x600です。
「Text1 の大きさ」では?
> Call Load(Me.Text1(i))
既にロード済みの場合、これはエラーになりますので、
Load すべきか否かを事前に判定すべきかと。
> それらは元の位置に残すようにしたいのです。
ならば、インデックスを連番にするのではなく、
i=行番号×100+列番号
のように、非連続な番号として扱ってみるとか。
魔界の仮面弁士様 and 皆様へ
申し訳ございません、魔界の仮面弁士様の指摘どおりで
書き込み内容に不正確な箇所が多くありました。
重ねてお詫び致します。
---
> ひとつの表形式のコントロールを採用した方が良いと思いますよ。
具体的にはDataGridなどでしょうか?
当方、この手のコントロールについては使用経験もなく、知識も
無い為、コーディングのイメージがわきません。
以下のようなことが出来るコントロールは何になりますか?
ご指摘やアドバイスが頂ければ、自分なりに詳細を調べて
みます。
・セルの大きさを任意の大きさに指定出来る。
・ドラッグにて複数のセルを選択出来る。
・選択したセルは任意の色をつけることが出来る。
・選択したセルは全体の中の「どの位置にあるセルなのか」を
把握することが出来る。
> 具体的にはDataGridなどでしょうか?
DataGrid / DBGrid などのグリッド系コントロールは、
行データの繰り返しには向きますが、今回の要件には、
あまり向かないかも知れませんね。
> 以下のようなことが出来るコントロールは何になりますか?
Microsoft Spreadsheet コントロールとか、
階層フレキシブル(MSHFlexGrid)コントロール、
フレキシブル(MSFlexGrid)コントロール…とか。
ツイート | ![]() |