コードから、ラベルを作るには?

解決


keye  URL  2005-04-08 07:34:33  No: 14153

毎度毎度お世話になっています
どうかお付き合い願います

外部ファイルに合わせた数だけ、ラベルを作りたいのですが
マウスでペッたんの作り方しか知りません
プログラム内で、まぁ、そういうオブジェクトを作成できませんか?
よろしくお願いします


Mr.XRAY  URL  2005-04-08 08:50:58  No: 14154

以下の様なコードではどうでしょうか.
ミソというかポイントは
    (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;


Mr.XRAY  URL  2005-04-08 08:57:23  No: 14155

おっと間違い.
>SetLength(ALabelArray,Cnt); 

SetLength(ALabelArray,Cnt-1);
ですね.
それから,このやり方がいいという訳ではありません.
他にもやり方はありますが.とりあえずということです.
また,各ラベルをクリックした時の動作を決めるコード(イベント)の
設定は含まれていません.


Mr.XRAY  URL  2005-04-08 08:58:38  No: 14156

ゴメンなさい.個数を決めるのだから,
SetLength(ALabelArray,Cnt); 
でいいんでした.


keye  URL  2005-04-08 22:12:50  No: 14157

ありがとうございます
配列とラベルをあわせて定義できるんですね
ということは
EditArray : array of TEdit;
なんてことも可能なわけですか?


Mr.XRAY  URL  2005-04-09 00:24:19  No: 14158

>配列とラベルをあわせて定義できるんですね

配列を使用しなくても

var
   ALabel : TLabel;
begin
     ALabel:=TLabel.Create(Self);
       .....

というようにできますが,いくつも作成するときは配列の方が
便利ではないかと思います.
(2〜3個程度なら,Label1,Label2,Label3とかいう名前で作成しても
いいでしょう)

>EditArray : array of TEdit;

やってみて下さい.(^_^)


keye  URL  2005-04-10 00:44:44  No: 14159

ありがとうございます
座標とか関係あるので、配列のほうがよさそうです

> やってみて下さい.(^_^)
やってみます


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

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






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