مقدار top و left میتونه به صورت یک متغیر باشه یایه چیزی شبیه اینیا مقدار لیبل ها چی؟ مثلکد:top(i*10-4)
ممنون از اینکه حوصله میکنی و جوابمو میدیکد:mylabel[i*4-1].caption:= table1.fieldbyname('name').value;
Printable View
مقدار top و left میتونه به صورت یک متغیر باشه یایه چیزی شبیه اینیا مقدار لیبل ها چی؟ مثلکد:top(i*10-4)
ممنون از اینکه حوصله میکنی و جوابمو میدیکد:mylabel[i*4-1].caption:= table1.fieldbyname('name').value;
البته، روشي كه مرد مباح عزيز گفتن بسيار خوب و درسته. ولي يك راه ديگه هم هست. مي تونيد از يك Container استفاده كنيد، و اون رو Parent كليدهايي كه تازيه مي سازيد كنيد. در نهايت مي تونيد به وسيله يه حلقه، به سادگي تعداد ليبلهاي اون رو شمارش كنيد:
اين تابع تعداد TLabel هاي شما رو بر مي گردونه. در ضمن براي ايندكس گزاري كامپوننتهاي خودتون از خاصيت Tag حتماً استفاده كنيد چون براي همين كارا اين خاصيت رو در نظر گرفتن.کد:function labelsearch(panel : TPanel):integer;
var
ind : integer;
begin
result := 0;
for ind := 0 to panel.componentCount - 1 do
begin
if (panel.component[ind] is TLabel) then
inc(result);
end;
end;
موفق باشين
من برنامه را تا اینجا رسوندماما این ارور ها رو میده و به هیچ وجه هم درس نمیشه این ارورا چیند؟کد:procedure TForm1.Button1Click(Sender: TObject);
var
arrLabel : array[1..10] of TLabel;
begin
y := (table1.RecordCount);
i :=0;
table1.Open;
table1.Edit;
while not table1.Eof do
begin
table1.First;
for i:=1 to y do
begin
x := (i*4-3);
arrLabel[x] := TLabel.Create(Form1);
arrLabel[x].Left := 10;
arrLabel[x].Top := 30*i;
arrLabel[x].AutoSize := True;
arrLabel[x].Caption := table1.FieldValues['student number'];
arrLabel[x].Visible := True;
arrLabel[x].Parent := Form1;
end;
begin
i :=0;
end;
while not table1.Eof do
begin
table1.First;
for i:=1 to y do
begin
x := (i*4-2);
arrLabel[x] := TLabel.Create(Form1);
arrLabel[x].Left := 100;
arrLabel[x].Top := 30*i;
arrLabel[x].AutoSize := True;
arrLabel[x].Caption := table1.FieldValues['frist name'];
arrLabel[x].Visible := True;
arrLabel[x].Parent := Form1;
table1.Next;
end;
end;
end;
end;
end.
راستی این روشی که شما گفتین خیلی سختهکد:[Warning] Unit1.pas(51): For loop control variable must be simple local variable
[Warning] Unit1.pas(69): For loop control variable must be simple local variable
اصلا از این اصطلاحات سر در نمیارم اگه میشه یه توضیح بدین این دستور ها چجوری کار میکنننقل قول:
function labelsearch(panel : TPanel):integer;
var
ind : integer;
begin
result := 0;
for ind := 0 to panel.componentCount - 1 do
begin
if (panel.component[ind] is TLabel) then
inc(result);
end;
end;
دوست عزیز. اونا Warning هستند و Error محسوب نمیشن. منظورش هم اینه که i رو بایددر محدوده خود Procedure تعریف کنی و نه در سطح کلی برنامه. البته مشکلی هم نداره و برنامت اجرا میشه.