- PR -

For文で変数を変更するには?

投稿者投稿内容
たにくん
会議室デビュー日: 2005/01/19
投稿数: 19
投稿日時: 2005-02-02 10:35
おはようございます。

300個近くのTextBoxですが、エクセルのような表を作って月別の予定表を作ろうと思っていて、
Grid系は調べたのですが、利用方法がデータベースの表示方法といったものしか発見できず・・
TextBox(大きさ:20*20)を利用して強引に表を作ろうとしていました。

甕星さまのご指導通り法則性がありますので
ソース上でTextBoxを作って配列すれば一番いいようなのでやってみました。
無事表が出てきました。(細かいです、、)
変数も無事各TextBoxに反映されているので大丈夫みたいです。

やったはいいもののハッシュはよく理解出来ていませんでした、、
今勉強中です、すいません。

皆様のお陰で助かりました。ありがとう御座いました。
VIM
ベテラン
会議室デビュー日: 2003/11/14
投稿数: 76
投稿日時: 2005-02-02 11:11
こんな感じになったのかな?
コード:
Private tbox() As System.Windows.Forms.TextBox

Private Sub InitializeComponent()
	Dim i as integer
' ;;; 既存コードのどこかに以下を挿入
	Redim tbox(300)
	For i = 0 To 299	
		tbox(i) = New system.Windows.Forms.TextBox
		With tbox(i)
			.Location = New system.Drawing.Point((i \10)*20,(i Mod 10)*20)
			.Name = "Textbox" & CStr(i)
			.Size = New system.Drawing.Size(20,20)
			.Text = CStr(i)
		End With
		Me.Controls.Add(Me.tbox(i))
	Next i
' ;;;
End Sub

xxななおxx
ベテラン
会議室デビュー日: 2005/01/18
投稿数: 61
お住まい・勤務地: 東京(練馬)
投稿日時: 2005-02-02 11:51
・・・・・。。
「目的の機能となったのだから、それでも良いのか?・・」っと自問自答してしますが・・。
ちょっと絶句ぎみです・・・。
ご苦労さまでした。

.Netから初めてWindowsアプリケーションを作られたのだと思いますが、
Gridの勉強はしたほうが良いと思います。

この掲示板のページの上部に、
バナーで”GrapeCity”さんの広告はよく見えますよね。
お金がかかりますが、標準グリッド(DataGrid)よりも拡張した機能を持った
便利で使いやすくなっている(?)グリッド系コンポーネントも販売しています。
買えなくても世の中にどのような機能のものが存在するのか調べるのも
勉強になって良いと思います。。

ご健闘をお祈りします。
たにくん
会議室デビュー日: 2005/01/19
投稿数: 19
投稿日時: 2005-02-02 11:52
下記のソースで今のところやってます。
ご報告までに。
xxななおxx様、なんども足を運んでいただき、ほんとありがとうございます。

■ソース
Dim yoko As Integer = 20
Dim tate As Integer = 20
Dim X As Integer = 150
Dim Y As Integer = 150
Dim TextBox() As TextBox
Dim Count As Integer="読み込みデータの数"

For i As Integer = 0 To AllCount - 1
TextBox(i) = New TextBox
With TextBox(i)
.Text = dtView(i)(0)
.Width = yoko
.Height = tate
'縦に幅2pxで表示
.Location = New Point(X, Y + (i * 22))
End With
Me.Controls.Add(TextBox(i))
'出力テスト
      Debug.WriteLine(i)
Next


[ メッセージ編集済み 編集者: たにくん 編集日時 2005-02-02 11:57 ]
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2005-02-02 12:11
引用:

VIMさんの書き込み (2005-02-02 11:11) より:
こんな感じになったのかな?
コード:
Private tbox() As System.Windows.Forms.TextBox

Private Sub InitializeComponent()
...
End Sub




デザイナの影響を受けないように、InitializeComponent()
の外(後方)に出しておいたほうが良いと思います。
_________________
IEEE-CSDP 2004-2007
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-02-03 11:21
こんにちわ。ぼのぼのです。

引用:

たにくんの書き込み 2005-02-02 10:35 より:

300個近くのTextBoxですが、エクセルのような表を作って月別の予定表を作ろうと思っていて、
Grid系は調べたのですが、利用方法がデータベースの表示方法といったものしか発見できず・・
TextBox(大きさ:20*20)を利用して強引に表を作ろうとしていました。



TextBoxを並べる方式で落ち着いたみたいですので今更かもしれませんが…
DataTableを自分で定義すれば、データベースの表示方法といったものがそのまま応用できますよ。DataGrid使ったほうが、多分後々楽です。TextBoxをコードで並べる方法は、色々勉強にもなるでしょうし、ほんとの意味で「好きなように」並べられるので、決してデメリットばかりではないと思いますけど。

コード:

Dim tbl As New DataTable

With tbl.Columns
    .Add(New DataColumn("1月", GetType(Decimal)))
    .Add(New DataColumn("2月", GetType(Decimal)))
    .Add(New DataColumn("3月", GetType(Decimal)))
         :
End With

tbl.Rows.Add(m_tbl.NewRow)
tbl.Rows(0)("1月") = 10000
     :


ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-02-03 11:31
↑コピペミス(^^;
×tbl.Rows.Add(m_tbl.NewRow)
○tbl.Rows.Add(tbl.NewRow)

ついでに。

引用:

べるさんの書き込み(2005-02-01 23:13)より:

Dim str As String
For i As Integer = 1 To 300
 str += "objHash.Add(""TextBox" + i.ToString() + """, TextBox" + i.ToString() + ")" + vbLf
Next i

できたstrをどっかに表示して、コピペしてソースに貼る。(こういうのではだめ?・・)


Excelとテキストエディタを組み合わせても似たようなことができます。
Excelで可変にしたいとこだけ別セルにしといて、ドラッグで連番にする。
固定のとこはドラッグでコピーする。
その後全セルを選択してテキストエディタにコピペし、一括置換でTabを削る。
正規表現の置換と組み合わせると、色々応用がききます。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-02-03 22:26
引用:
Excelで可変にしたいとこだけ別セルにしといて、ドラッグで連番にする。
固定のとこはドラッグでコピーする。
その後全セルを選択してテキストエディタにコピペし、一括置換でTabを削る。

いまのExcelは別セルにしなくても、
objArry.Add(TextBox1)
objArry.Add(TextBox2)
objArry.Add(TextBox3)
などとしておいて、だ〜〜っとドラッグすれば数字のとこだけ変わりますね(…確か)。
この行を縦に選択してソースに貼れば改行も入りますね。あ、
objHash.Add("TextBox0",TextBox0)
上記のように数字が2箇所ある場合はどうだったかな・・

引用:
Grid系は調べたのですが、利用方法がデータベースの表示方法といったものしか発見できず・・

ぼのぼのさんもおっしゃっているように本当のDB(SQLサーバーとか)がなくても
DataTableやDataSetを作れます。自分でデータを詰め込んでくイメージですね。

スキルアップ/キャリアアップ(JOB@IT)