1

labels通常の方法を使用して多くのキャプションを変更しようとしています:

form1.label1.caption := '1';
form1.label2.caption := '2';
form1.label3.caption := '3';
form1.label4.caption := '4';
form1.label5.caption := '5';
form1.label6.caption := '6';
form1.label7.caption := '7';
form1.label8.caption := '8';
...

のようなラベル名を使用Forして割り当てるにはどうすればよいですか? このようなもの:iLabel[i]

for i := 1 to 50 do
   begin
     form1.label[i].caption := Inttostr(i);
   end;

そして、あまりにも多くのオブジェクトパラメータを変更する最良の方法は何ですか (この場合caption)?

4

3 に答える 3

14

50 個のラベルが確実にある場合、label1、label2 .. label50
ソリューションは次のようになります。

var lbl: TLabel;
for i:=1 to 50 do
begin
    lbl := FindComponent('Label'+IntToStr(i)) as TLabel;
    lbl.Caption := IntToStr(i);
end;
于 2013-09-15T14:43:34.633 に答える
3

フォームのすべてのラベルを変更したい場合は、次のようなものを使用できます。

for i := 0 to Form1.ComponentCount do
  if Form1.Components[i] is TLabel then
    TLabel(Form1.Components[i]).Caption := IntToStr(i + 1);

ラベルが Panel またはその他のコンテナにある場合、Form1 を「Form1.Panel1」などに置き換えることでこれを制限できます。また、使用することもできます。コンポーネントのタグ プロパティを使用して、変更するラベルを簡単に選択できます。

于 2013-09-15T14:48:26.510 に答える