フォーム上に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)コントロール…とか。
| ツイート |   |