• ベストアンサー

Delphiでのコントロールの配列について

kenzo-2000の回答

  • ベストアンサー
回答No.1

誰も答える方が現れないので私からすこし。。。 この50のコンポーネントの内訳が分かりませんが、仮に、Button(TButton)として、名前(nameプロパティ)が「BtnXX(XXは01~50まで)」とする。 そのサイズ変更(width)を50とする。 for i:= 1 to 50 do begin TButton(FindComponent(Format('Btn%.2d', [i]))).width:= 50; end; Indexとは少し違うように思いますが、十分対応できるものと思います。 何か質問あれば補足してください。

who
質問者

お礼

ありがとうございます。 そんな書式でいけるんですね。助かりました。 そろそろ、質問締めようと思ってたところでしたので、ホントに助かりました。 ありがとうございます。

関連するQ&A

  • コントロールが配列かどうかを知るには?

    Visual Basic6.0(SP5)で伺いたいことがあります。 フォーム上の全てのオブジェクトを For Each文で取得しています。以下の様にです。 Dim Control As Object For Each Control In Form1.Controls If TypeOf Control Is Text Then End If Next Control このとき個々のControlがコントロール配列かどうかを知りたいのですが、どうすればよろしいでしょうか?フォーム上にはコントロール配列のオブジェクトも、コントロール配列ではないオブジェクトもあります。 Control.Indexの値を参照しようとしても、コントロール配列でない場合は 「配列ではないオブジェクトです」とエラーになります。 IsArray関数でもFalseになってしまいます。 何を行いたいかというと、そのControlがコントロール配列(Text1(0)とかText1(1)とか)かどうかを調べて、そのIndexをある関数の引数にしたいのです。全てコントロール配列だったら、Control.Indexで値を取得できるのですが。 よろしくお願いします。

  • Delphiのウィンドウサイズ変更

    Delphi 6でウィンドウサイズを変更(最大化)する方法で詰まっています。 直接WidthとHeightの値を指定する方法もあると思うのですが、画面の最大サイズが判っていないとならないため都度画面サイズを調べなければなりません。ウィンドウの最大化ボタンを押したときのように最大化する方法は無いのでしょうか。VC++にはあったのですが… 開発環境:WindowsXP、Delphi6 Personal

  • VB2005 ラベル(ボタン)をコントロール配列のようにしたい

    VB2005を使用していますが、画面に貼り付けている同じ名前のラベルおよびボタンをコントロール配列のようにしたいのですが、方法が分かりません。VB6ではラベル(ボタン)のIndexに番号を付けていけばよかったのですが。どなたか知ってれば教えて頂きたいのですが。 よろしくお願いします。

  • VB6.0でコントロール配列の配列順序を変更したい

    掲題の件ですが、たとえばオプションボタンでコントロール配列にしたとき option(0)、option(1)、… と追加された順番に従って設定されますが、 option(0)→option(2) などにコードや設定で後から変更することは可能なのでしょうか? どのようにすれば変更できるでしょうか。 よろしくお願い致します。

  • 配列を利用したコントロールを作成して同一配列番号のコントロールを操作するには

    VB.NET2003を利用しています http://jeanne.wankuma.com/tips/control/arraycontrol.html こちらを参考にしてコントロールの配列を作成 ComboBox(i) Button(i) i=1 to 5(実際のコントロールのNameは違いますが便宜上このような記述にさせていただきました) として位置を変えながら配置していきました。  ComboBox   Button 1[不可 ▽] 1[ボタン]    可 2[不可 ▽] 1[ボタン] 3[不可 ▽] 1[ボタン] 4[不可 ▽] 1[ボタン] 5[不可 ▽] 1[ボタン] ComboBoxは同一イベントを使いたいと思っています ComboBox(i)のインデックス値が変わったらButton(i)のEnableを変更しようと思う場合どのように記述したらよいのでしょうか? 例:1が「不可」から「 可」に変わったら、1の「ボタン」というテキストを「押して」というテキストに変える と言うように同一配列番号のコントロールのプロパティを操作したいのです こういった場合はどのようにしたらよいのでしょうか 足りない情報などありましたらどんどんおっしゃってください よろしくお願いします

  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

  • 【VB2005】コントロールを配列に。

    下記のコードを変更して、コントロールの値を配列に代入して、 その値をもとに、ボタンを複製して追加したいと思っています。 Public Class frmStart Dim btnNewButton1 As New Button Private Sub frmStart_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load NewButton1.Text = "処理1" btnNewButton1.ForeColor = Color.DimGray btnNewButton1.Location = New Point(10, 100) btnNewButton1.Size = New Size(180, 30) '// ボタンを追加します Me.Controls.Add(btnNewButton1) end sub End Class やりたいことは、Dim btnNewButton() As New Button のようにデータを配列にして、 btnNewButton(0).ForeColor = Color.DimGray btnNewButton(0).Location = New Point(10, 100) btnNewButton(0).Size = New Size(180, 30) btnNewButton(1).ForeColor = Color.DimGray btnNewButton(1).Location = New Point(380, 100) btnNewButton(1).Size = New Size(180, 30) '// ボタンを追加します Me.Controls.Add(btnNewButton(0))     Me.Controls.Add(btnNewButton(1)) という事をしたいのですが、方法が解らなくて困ってます。 お知恵を貸してください。

  • ユーザーコントロールの配列化

    VB.NETのWindowsコントロールライブラリで作成したコントロールをメインになるプロジェクトから動的に呼び出したいのですが、複数のコントロールをボタンで表示非表示を行いたいので、配列化したいと考えているのですが、どのようにすればよいですか? public testControl() as Object Private Sub Form_Load(... testControl(0) = New Test1.Form1 testControl(1) = New Test2.Form1 testControl(2) = New Test3.Form1 ... For i = 0 to 10 testcontrol(i).Location = New Point(0,0) testcontrol(i).Size = New Size(100,100) testcontrol(i).Visible = False Next End Sub 見たいな処理を行いたいと考えています。 ほかによい方法があれば教えてください。

  • VB2010でのコントロール多次元配列について

    教えてください。 実行中にコントロールを生成したいのですが、 Public Class Form1  Private myTxt(,) As System.Windows.Forms.TextBox  Me.myTxt = New System.Windows.Forms.TextBox(59, 2) {}  Dim i As Integer  Dim j As Integer  Dim h As Integer  Dim p As Integer  h = 10  p = 100  For i = 0 To Me.myTxt.GetLength(0) - 1   For j = 0 To Me.myTxt.GetLength(1) - 1    Me.myTxt(i, j) = New System.Windows.Forms.TextBox    Me.myTxt(i, j).Name = "myTxt" + i.ToString() + j.ToString()    Me.myTxt(i, j).Size = New Size(100, 30)    Me.myTxt(i, j).Location = New Point(p, h)    p = p + 100   Next j   h = h + 30  Next i  Me.myPnl.Controls.AddRange(Me.myTxt) と書くと最後の行が波線になり、 “型 'System.Windows.Forms.TextBox の 2 次元配列' の値を 'System.Windows.Forms.Control' に変換できません。”とエラーになります。 これはAddRangeは多次元配列に使用できないということなのでしょうか? 色々検索してみましたが、コントロールの生成に関する多次元配列が見つけられずに 困っていました。 最後のAddRange(Me.myTxt)をAdd(Me.myTxt(i,j))などと変えたりしても別のエラーになり、 基本的に間違っている気がしますがどこだかがわかりません。 詳しい方、宜しくお願い致します。

  • C#で作成したDLLをDelphiで呼ぶ方法

    プログラミング初心者です。 以下の内容について、どなたか教えてください。 Visual studio 2010(C#のフォームアプリケーション)とCOM(ActiveX Tool bar)で作成されたフォームをDelphiで呼び出すことは可能でしょうか。 上記の内容を試験的に作成し(Visual studio 2010C#のフォームにCOMから参照したToolbarを貼り付けた物)、プロジェクトの出力方式をクラスライブラリに変更して、DLLの作成までは行えました。しかし、その先のDelphiからの呼び出し方がわかりません。 上記のDLLを用いてDelphiから呼び出す方法をご存知の方がいれば、教えてください。 なお現在の開発環境は以下の通りです。 Visual Studio 2010(C#) Delphi XE2(Trial) ご教授のほど、よろしくお願い致します。