سلام
من میخوام در حیا اجرای برنامه هر جا که نیاز شد یک لیبل ساخته بشه و دارای ویژگی های خاصی باشه.
فعلا سوالم اینه که چطور در حیا اجرای برنامه بتونیم یک لیبل رو بسازیم و روی فرم قرار بدیم؟
Printable View
سلام
من میخوام در حیا اجرای برنامه هر جا که نیاز شد یک لیبل ساخته بشه و دارای ویژگی های خاصی باشه.
فعلا سوالم اینه که چطور در حیا اجرای برنامه بتونیم یک لیبل رو بسازیم و روی فرم قرار بدیم؟
سلام و عرض خوش آمد به انجمن.
دوست عزيز، خواشاً در پستهاي بعدي از سايز فونت استاندارد انجمن براي دادن پست استفاده كنيد.
در ضمن جستجو، كليد موفقيت در زمينه هاي مختلف مخصوصاً كامپيوتر هستش. اينجور سؤالها رو با يه سرچ معمولي مي تونيد حل كنيد.
ولي براي اينكه دلخور نشين:
موفق باشينکد:var
lab : TLabel;
begin
lab := TLabel.create(application);
lab.visible := true;
lab.top := 100;
lab.left := 100;
سلام
عیدتون مبارک
ممنون از بابت راهنمایی دوست عزیز
ولی وقتی کد بالا را وارد میکنم ارور میده و عکس ارور را در آدرس زیر قرار دادم. اگر ممکنه راهنمایی کنید.
راستش قبلا از زدن تاپیک سرچ کردم ولی چیزی پیدا نکردم.کد:http://up.--------.ir/4/1260113228.jpg
ممنون میشم راهنمایی کنین.
با سلام
فكر كنم بايد var را قبل از begin بنويسيد و در اين كد نيازي به begin دوم نداريد.
با تشكر
اين مشكل، مشكل كد نيست. بهتره، يه بار ديگه نحوه برنامه نويسي در دلفي رو بررسي كنيد.
يک دکمه روي فرم بزاريد و اين کد رو توش بنويسيد:
کد:procedure TForm1.Button1Click(Sender: TObject);
var
Label1 : TLabel;
begin
Label1 := TLabel.create(Form1);
Label1.Parent:=Form1;
Label1.Caption:='Runtime Label';
Label1.top := 100;
Label1.left := 100;
end;
سلام
من انجام دادم ولی ارور داد اما وقتی label1 :tlabel; رو بردم بالا در قسمت var قراردادم مشکل حل شد
ولی من یه سوال دارم ... اگه بخواهیم تعداد زیادی لیبل اضافه کنیم و شماره لیبل رو از یک شمارنده بگیریم چکاری باید کرد و ضمنا محل قرار گرفتن لیبل ها رو چه طوری طی یک برنامه خاص خودش اتوماتیک انجام بده
باید یک آرایه تعریف کنید. برای مثال :
و طریقه استفاده :کد:mylabel : array [1..50] of Tlabel
کد:mylabel[1] := Tlabel.create(Self);
خیلی باحالی مرد مباح
باور کن هرچند بعضی وقتا ضد حال میشی:10:
اما سوال اینجاست
1. شماره لیبل چطوری عوض میشه
2. جایی که نیبل میشینه چطور تعریف میشه
1. شمارش رو که بالا گفتم. توی مثال
2. به کمک Top و Left هد کدوم از اونا میتونی این کارو بکنی.
مقدار 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 تعریف کنی و نه در سطح کلی برنامه. البته مشکلی هم نداره و برنامت اجرا میشه.