毎度毎度お世話になっています
どうかお付き合い願います
外部ファイルに合わせた数だけ、ラベルを作りたいのですが
マウスでペッたんの作り方しか知りません
プログラム内で、まぁ、そういうオブジェクトを作成できませんか?
よろしくお願いします
以下の様なコードではどうでしょうか.
ミソというかポイントは
(1)ALabelArray[i]:=TLabel.Create(Self);
(2)ALabelArray[i].Parent:=Self;
の2行です.(1)でラベルを作成します.(2)でそれを,Self,つまり
このForm1にのせます.もし,パネル等にのせたい時はSelfの代わりに
Panel1などとします.
このコードではLabelをCnt:=5で,5つ作成しています.
それぞれのLabelに,いろいろ設定するには,例えば2番目なら
ALabelArray[1]:=何々;
とします(何故なら0から始まっているので).
procedure TForm1.Button1Click(Sender: TObject);
var
i,Cnt : Integer;
AWidth,AHeight : Integer;
ALabelArray : array of TLabel; //ラベルを入れておく配列
begin
Cnt:=5;
AWidth:=100;
AHeight:=30;
SetLength(ALabelArray,Cnt); //ラベルを入れておく配列の大きさ決定!!(255以下に限る)
for i:=0 to Cnt-1 do begin
ALabelArray[i] :=TLabel.Create(Self);
ALabelArray[i].Parent :=Self;
ALabelArray[i].AutoSize :=False;
ALabelArray[i].Alignment:=taCenter;
ALabelArray[i].LayOut :=tlCenter;
ALabelArray[i].Left :=150;
ALabelArray[i].Width :=AWidth;
ALabelArray[i].Height :=AHeight;
ALabelArray[i].Top :=50+(AHeight+5)*(i-1);
ALabelArray[i].Color :=clSilver;
ALabelArray[i].Caption :='Label '+IntToStr(i);
end;
end;
おっと間違い.
>SetLength(ALabelArray,Cnt);
は
SetLength(ALabelArray,Cnt-1);
ですね.
それから,このやり方がいいという訳ではありません.
他にもやり方はありますが.とりあえずということです.
また,各ラベルをクリックした時の動作を決めるコード(イベント)の
設定は含まれていません.
ゴメンなさい.個数を決めるのだから,
SetLength(ALabelArray,Cnt);
でいいんでした.
ありがとうございます
配列とラベルをあわせて定義できるんですね
ということは
EditArray : array of TEdit;
なんてことも可能なわけですか?
>配列とラベルをあわせて定義できるんですね
配列を使用しなくても
var
ALabel : TLabel;
begin
ALabel:=TLabel.Create(Self);
.....
というようにできますが,いくつも作成するときは配列の方が
便利ではないかと思います.
(2〜3個程度なら,Label1,Label2,Label3とかいう名前で作成しても
いいでしょう)
>EditArray : array of TEdit;
やってみて下さい.(^_^)
ありがとうございます
座標とか関係あるので、配列のほうがよさそうです
> やってみて下さい.(^_^)
やってみます
ツイート | ![]() |