PDA

View Full Version : غیر فعال کردن تمام Button های درون یک فرم



سيد مجتبي هاشمي
شنبه 03 مرداد 1388, 11:49 صبح
سلام. دوستان من یه کد مربوط به زبان C# دارم که تمام دکمه های درون یک فرم رو غیر فعال میکنه. کسی میتونه معادل اون رو در دلفی اینجا بزاره؟ ممنون از شما.


foreach (controls ctrl in form1)
{
if (controls.Gettype().Name = "Button")
controls.Enabled = False;
}



ctrl درون دستورات نام آبجکت است.

Felony
شنبه 03 مرداد 1388, 12:41 عصر
for i:=0 to ComponentCount-1 do
TButton(Components[i]).Enabled:=False;

Ahmad Chehreghani
شنبه 03 مرداد 1388, 12:51 عصر
for i:=0 to ComponentCount-1 do
TButton(Components[i]).Enabled:=False;

نکته کنکوري : ممکنه Components[i] دکمه نباشه!
در کد زير به جاي self مي تونيد از Form1 هم استفاده کنيد.
نکته کنکوري 2: در دلفي 7 ، انواع دکمه ها را با Button ميشود تشخيص داد اما در دلفي 2009 اگر يک BitBtn در فرم باشد آن را با TButton نمي توان تشخيص داد!


var c:TComponent;
begin
for c in self do
if c is TButton then TButton(c).Enabled:=False;
end;

Chris_Ronaldo
شنبه 03 مرداد 1388, 22:26 عصر
من پیشنهادی دارم: اگر button های روی فرم شما به صورت static هستند و runtime تولید نمی شوند پیشنهاد می کنم آنها روی یک پنل قرار بدهید و enable مربوط به پنل را true یا false کنید.
با این روش زمان اجرای فرایند کمتر و بهینه تر از روشی هست که در بالا ارائه شده است چون همان پیدا کردن button ها بر روی فرم دارای زمان اجرای خاص خودش هست.
البته فقط یک پیشنهاد بود :چشمک:

MSHService
یک شنبه 04 مرداد 1388, 07:56 صبح
من پیشنهادی دارم: اگر button های روی فرم شما به صورت static هستند و runtime تولید نمی شوند پیشنهاد می کنم آنها روی یک پنل قرار بدهید و enable مربوط به پنل را true یا false کنید.
با این روش زمان اجرای فرایند کمتر و بهینه تر از روشی هست که در بالا ارائه شده است چون همان پیدا کردن button ها بر روی فرم دارای زمان اجرای خاص خودش هست.
البته فقط یک پیشنهاد بود :چشمک:

سلام

ببخشید فکر میکنم گفته شما یه اشکال داره! اینه که Button ها الزاما روی یک پانل قرار نمیگرن! و ممکنه روی چند Page از PageCOntrol باشند!!

اگر در کد زیر
if c is TButton then TButton(c).Enabled:=False;

شرط TButton(c).visible این هم اضافه کنیم فکر می کنم بهتر باشه.

موفق باشید.

Ahmad Chehreghani
یک شنبه 04 مرداد 1388, 11:00 صبح
شرط TButton(c).visible این هم اضافه کنیم فکر می کنم بهتر باشه.

اگه اضافه کنيم که ديگه شبيه برنامه اي که mojtaba_ha2007 داده نميشه!

سيد مجتبي هاشمي
یک شنبه 04 مرداد 1388, 21:01 عصر
for i:=0 to ComponentCount-1 do
TButton(Components[i]).Enabled:=False;


کد شما اشتباه بود و کد صحیح به صورت زیر است.





var
i : Integer;
begin
for i := 0 to ComponentCount-1 do
begin
if Components[i].ClassType = tbutton then
TButton(Components[i]).Enabled := False;
end;
end;

Felony
یک شنبه 04 مرداد 1388, 21:30 عصر
کد شما اشتباه بود و کد صحیح به صورت زیر است.





var
i : Integer;
begin
for i := 0 to ComponentCount-1 do
begin
if Components[i].ClassType = tbutton then
TButton(Components[i]).Enabled := False;
end;
end;


:لبخندساده:درسته من حواسم به این مورد نبود ، راستی نیاز به بلاک شروع و پایان برای حلقه نیست :


var
i : Integer;
begin
for i := 0 to ComponentCount-1 do
if Components[i].ClassType = tbutton then
TButton(Components[i]).Enabled := False;
end;

سيد مجتبي هاشمي
سه شنبه 06 مرداد 1388, 11:39 صبح
:لبخندساده:درسته من حواسم به این مورد نبود ، راستی نیاز به بلاک شروع و پایان برای حلقه نیست :


[/code]


ممنون از راهنماییتون.

سيد مجتبي هاشمي
سه شنبه 06 مرداد 1388, 11:40 صبح
:لبخندساده: راستی نیاز به بلاک شروع و پایان برای حلقه نیست





ممنون از راهنماییتون.