Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2011, 15:04   #1
alexdelphi
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 40
По умолчанию Одновременное изменение свойств компонентов

Мне надо очистить текст в Label. Если их один-два, то я просто пишу:
Код:
  Label1.Caption := '';
  Label2.Caption := '';
Но если я имею 10 ярлыков, то это превращается в проблему, т.к. приходится печатать 10 строк однообразного кода, что чревато описками. Недавно я поступил так: объявил массив lab указателей на TLabel и в обработчике создания формы записал выделение памяти под его элементы. В дальнейшем писал так:
Код:
  var i: integer;
  for i:=1 to 2 do lab[i]^.Caption := '';
Какие существуют альтернативные пути синхронного изменения свойств нескольких компонентов парой строк кода?

Последний раз редактировалось alexdelphi; 24.08.2011 в 15:14.
alexdelphi вне форума Ответить с цитированием
Старый 24.08.2011, 15:17   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
1. Почему работает как вариант lab[i]^.Caption, так и lab[i].Caption (и, более того, при нажатии точки после lab[i] работает IntelliSense во втором случае)?
синтаксис такое позволяет(ибо объекты хранятся по ссылке) но лучше по человечески это делать.(хм, интелисенс)
Цитата:
2. Какие существуют альтернативные пути синхронного изменения свойств нескольких компонентов парой строк кода?
FindComponent + поиск.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.08.2011, 15:36   #3
alexdelphi
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 40
По умолчанию спасибо

Спасибо! Взял пример в Delphi 2010 по FindComponent, запустил и таки понял, что этот пример делает.
alexdelphi вне форума Ответить с цитированием
Старый 24.08.2011, 15:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Controls и ControlCount. Искать TLabel. Можно в Label.Tag поместить признак того, что Caption нужно очищать. Если Label-ы в разных контейнерах, то искать начиная с формы и рекурсивно по встреченным контейнерам
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.08.2011, 16:01   #5
alexdelphi
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Можно в Label.Tag поместить признак того, что Caption нужно очищать.
Про Tag вообще не подумал. А поиск Label'ов - в принципе, приличный вариант. Могу считать тему закрытой.

Последний раз редактировалось alexdelphi; 24.08.2011 в 16:04.
alexdelphi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа c ADOQuery и одновременное изменение ADOTable grenles БД в Delphi 4 03.06.2011 10:03
массовое изменение свойств компонентов CraZZy RabbIt Компоненты Delphi 1 15.03.2009 23:13
Изменение свойств файла dimonbest Win Api 7 23.02.2009 20:42
Изменение свойств компонентов jocry Общие вопросы Delphi 9 10.02.2009 10:27