Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 12:16 22.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Тема Чудя се от известно време...нови  
Автор orange! ()
Публикувано27.06.03 02:48



Чудя се от известно време може ли да се оптимизира следния код:
Примерно имам 50 Label -а, и искам да ги изчистя:

Label1.Caption:=' ';
Label2.Caption:=' ';
.....
Label50.Caption:=' ';


Та въпроса ми е:
Горното може ли да се напише по-елегантно и по-функционално, примерно с цикъл или нещо такова ???


Дайте акъл!

Дотук добре!
казал падащия от 13-тия етаж, като минал покрай 8-мия.


Тема Re: Чудя се от известно време...нови [re: orange!]  
Автор PhantomASМодератор (няма)
Публикувано27.06.03 06:33



Може ;-))))

for i:=1 to 50 do
(FindComponent('Label'+IntToStr(i)) as TLabel).Caption := ''

това е - сигурно може и по лесно ;-)))) ама струва ли си

---
Е т'ва е живот!


Тема Не така ве,нови [re: PhantomAS]  
Автор z_free (людоед)
Публикувано27.06.03 15:10



това те задължава лейбълите ти да имат точно тези имена, по-хубаво е

procedure TForm1.Button1Click(Sender: TObject);

var
j: Integer;
begin
with Form1 do begin
for j := 0 to ControlCount - 1 do begin
if Controls[j] is TLabel then begin
(Controls[j] as TLabel).Caption := '';
end;
end;
end;
end;

-
Ако искаш само някои Label-и да си сменят Caption-ите можеш да ги сложиш в GroupBox примерно, и вместу Form1 да ползваш GroupBox1, а ако интерфейса не ти го позволява, можеш да им сложиш Tag = -1 и после да нулираш само тези, чиито Tag = -1

-------------
Special killer double trouble triple extra nicotine monster!

Редактирано от z_free на 27.06.03 15:12.



Тема Re: Не така ве,нови [re: z_free]  
Автор PhantomASМодератор (няма)
Публикувано27.06.03 17:06



Много усложнения - за нищо - реално при първото пускане ако има нещо ще изгърми - а пък тази проверка която е правиш забавя цикъла (не че FIndComponent е много бърз ;-))) . И ако човека наистина иска да си промени само етикетите от група LabelXX - ще трябва да прави разни фокуси ;-))) - не винаги средствата оправдава целта(в случая да измениш заданието само и само после да се изпълнява по бързо).

---
Е т'ва е живот!

Редактирано от PhantomAS на 27.06.03 17:09.



Тема Re: Не така ве,нови [re: PhantomAS]  
Автор SDR (TaskMaster)
Публикувано27.06.03 17:54



a na mene ideqta s tag=grupa mnoo mi dopada - taka mojesh da si krashtawash labalite kakto te kefne i s edin zamah za dabarshesh opredelena grupa.... braos!!

------------------------------
I got a COMPILER, and I'm not afraid to use it!


Тема Мерси [re: z_free]  
Автор orange! ()
Публикувано01.07.03 03:34



Не спорете кое е по-ефективно, аз всъщност се интересувах от варианта с функцията FindComponent, знаех че има такава функция но не можах да намеря как се казва, затова питах;
Другия вариант също може да бъде полезен.

Благодаря Ви за помощта

Дотук добре!
казал падащия от 13-тия етаж, като минал покрай 8-мия.


Тема Re: Не така ве,нови [re: z_free]  
Авторmf2hd (Нерегистриран)
Публикувано01.07.03 17:03



Я да се намеся и аз :)))
Лично според мене варианта на z_free е по-добър, но си мисля че няма нужда първо да се прави проверка с "is" , а после и а "as". Според мен това е достатъчно :

with Form1 do begin
for j := 0 to ControlCount - 1 do
if (Controls[j] is TLabel) then begin
TLabel(Controls[j]).Caption := '';
end;

ще е по-ефективно. А за още по-ефективно може просто да се провери името на класа , но това си мисля че не е много удачен вариант :)

Освен това може да се използва и списъка - Components[ComponentCount]. TLabel все пак е компонент.

Що се отнася за FIndComponent. Си мисля че не е много добре да се използва в цикъл, едно, че е бавно и друго , ако после реши да смени имената на етикетите и ще му стане приятно , особенно ако нямат такава удобна връзка имената им :).



Тема Re: Не така ве,нови [re: mf2hd]  
Автор z_free (людоед)
Публикувано01.07.03 17:28



Аве с "as" няма проблем, "is"-а е бавен, ама по този начин хващаш и наследниците... с какви глупости само се занимаваме в края на работния ден

-------------
Special killer double trouble triple extra nicotine monster!

Редактирано от z_free на 01.07.03 17:29.




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.