テキストボックスのindexプロパティの自動入力をするには?

解決


たけし  2006-01-11 22:37:55  No: 93549

テキストボックスを複数個使い、マトリクスを作りたいのです。数が100×100近くあります。
テキストボックスのindexプロパティの値を任意に自動で割り振る方法はありますか? text1(???)の部分です。

また、テキストボックスを使った配列表示でよい方法があれば教えてください。

よろしくお願いします。


ひろ  2006-01-11 23:10:28  No: 93550

10000個ですか・・・
かなり大変そうですね。グリッド系のコントロールを使用することも検討してみてはどうでしょうか?


たけし  2006-01-11 23:18:46  No: 93551

当方、エンタープライズエディションなのでできませんでした。
どうしましょう???


medaka  2006-01-11 23:42:42  No: 93552

100個*100個のテキストボックスを1画面に出すのですか?
そうでないならパネルに貼り付けてスクロールさせるのかな?

配列でデータを保持する。
1画面分だけをテキストボックスを並べる。
下と横にスクロールバーを置いてそのValue値から
配列の該当部分を表示させる。

とすれば1画面分のコントロール数で済む。


たけし  2006-01-11 23:48:20  No: 93553

いろいろ教えていただきありがとうございます。
1つのフォーム上に表示しています。

そしてその1つ1つのテキストボックスに値(数値)を表示したいんです。

よろしくお願いします。


ん?  2006-01-11 23:52:30  No: 93554

>当方、エンタープライズエディションなのでできませんでした。

これが、わかんないんだけれども、
エンタープライズエディションでも
グリッド系のコントロールはあるように思うんだが・・・。

MSGridなど・・・。


たけし  2006-01-12 00:02:42  No: 93555

MSGrid  があるんですが、ライセンスが無いので使えません  、とエラーが出ます


ん?  2006-01-12 00:17:41  No: 93556

そう、
エンタープライズ=グリッド系コントロールが
使えないという掲示が気になっただけです。

他の初心者が誤解するので・・・。


ヤマ@文系  2006-01-12 09:12:20  No: 93557

こういうチャレンジ精神あるのは若い証拠ですよね!

Gridっぽく使いたいんですよね。。

text1(100,100)の2次元配列にするのはよいとして、

開発環境が不明なのでVB6でかかせてもらいます(苦、多分.NETだろうけど)

textbox()
10*10の場合こういうかんじです。
Load時に動的に作った方がいいと思います。

Option Explicit
Dim X As Integer

Private Type CellTemplate
    X As Integer
    Y As Integer
End Type

Dim Cell As CellTemplate

Private Function GetCellNum(ByVal X As Integer, ByVal Y As Integer)

    GetCellNum = X * 10 + Y    '縦が10の場合

End Function
Private Function GetCellPos(ByVal CellNum As Integer)

    Cell.X = Int(CellNum / 10)
    Cell.Y = Int(CellNum - Cell.X * 10)

End Function
Private Sub Form_Load()
Me.Show
 Text1(0).SetFocus
   
    
    

End Sub

Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
 Debug.Print Cell.X & " "; Cell.Y & "SEL " & Text1(Index).SelStart

    With Cell
        Select Case KeyCode
        Case vbKeyDown
            .Y = .Y + 1
        Case vbKeyUp
            .Y = .Y - 1
        Case vbKeyRight
        If Text1(Index).SelStart = Len(Text1(Index).Text) Then
                .X = .X + 1
            End If
        Case vbKeyLeft
            If Text1(Index).SelStart = 0 Then
                .X = .X - 1
            End If
            
            If .X < 0 Then .X = 0
            If .Y < 0 Then .Y = 0
            If .X > 9 Then .X = 9
            If .Y > 9 Then .Y = 9

        End Select
        
            Text1(GetCellNum(.X, .Y)).SetFocus
            
            
    End With

End Sub

Private Sub Text1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
GetCellPos Index

End Sub

なんか時間あまりなかったんで、適当ですが参考までに!
ではでは


時間がないので  2006-01-12 21:42:22  No: 93558

文章でのイメージだけで恐縮なのですが、ピクチャボックスに100×100で
グリッドを引き1つだけテキストボックスを配置し、キー入力やマウスイベントで
そのテキストボックスを各セルに移動させる。
そしてテキストボックスの内容が決定されたら、ピクチャボックスに表示といった
手段ではどうでしょうか。
もちろん各セルの内容はべつに用意した配列にいれて保存するということで。


たけし  2006-01-12 23:11:15  No: 93559

ありがとうございます。
いろいろアドバイスを参考にやってみたんですが、結局テキストで表示する前に計算によって配列っぽくしました。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加