سلام
من حدود 20 تا Label روی فرم دارم به نام های Label2 ,Label1,.... میخواهم در یک حلقه for یک Property از همه آنها را تغییر بدهم.لطفا بگویید چه کار باید بکنم.
سلام
من حدود 20 تا Label روی فرم دارم به نام های Label2 ,Label1,.... میخواهم در یک حلقه for یک Property از همه آنها را تغییر بدهم.لطفا بگویید چه کار باید بکنم.
for i := 0 to ComponentCount - 1 do
begin
if COMPONENTS[i] is TLabel then
TLabel(COMPONENTS[i]).Font.Name := 'Tahoma';
end;
این کد ناچیز است و خود گویای همه چیز...
با سلام
این هم یه روش دیگه ( به نقل از جاسم عرب برنامه نویس دات کام )
for i:=1 to 20 do
Tlabel(Findcomponent('label'+inttostr( i)).caption:=inttostr(i);
با تشکر از دوستان
روش اول درست کار کرد ولی روش دوم این خطاها رو تولید کرد.
[Error] Unit1.pas(38): Undeclared identifier: 'caption'
[Error] Unit1.pas(38): Incompatible types: 'TLabel' and 'String'
برای اهدای خاصیت موجود از یک کلاس به کلاس مشابه روش استفاده از پراسیجر Assign هم روش خوبیه.
Label2.Font.Assign(Label1.Font);
این کد رو میتونید با کد DelphiAssistant و یا امید ترکیب کنید تا خاصیت مشابه از کل lable های موجود مثل خاصیت Font رو با تمام زیر خاصیتهاش از خاصیت Font یک کامپوننت دیگه قرض بگیرید.
با سلام
تمامی جوابها به گونه ایی درست است ، ولی اگر نام لیبلها به این صورت نبوده و از نام گذاری واقعی :wink: استفاده شود نمیتوان از این روش استفاده کرد . برای اینمظور خوبست کد زیر را دوستان مبتدی تاملی کنند:
for I:=0 to ControlCount-1 do
if Controls is TLabel then
(Controls as TLabel).caption:='hellow word';
با این روش میتوان کنترلهای مشابه را در یک فرم هندل کرد.
با سلام و تشکر
روش "امید" هم درست بود.فقط یک پرانتز بسته کم داشت.
ولی روش امید یه ایراد اساسی داره : زمانبر هستش . یعنی وقتی تعداد اجزای روی فرم زیاد بشه ( بالای 100 تا )