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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2017, 16:17   #1
Артист
Пользователь
 
Регистрация: 14.10.2017
Сообщений: 35
По умолчанию Установить Caption всем компонентам формы.

Возможно ли такое без использования is as?

Код:
procedure TfrmMain.OnActivate(Sender: TObject);
var I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
  begin
    if IsPublishedProp(Components[i], 'Caption') then // Если есть свойство
    begin
      Components[i].Caption := 'jfgygh' // Так не работает
    end;
  end;
end;
А так только для TLabel
Код:
procedure TfrmMain.OnActivate(Sender: TObject);
var I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
  begin
    if (Components[i] is TLabel) then then // Если есть свойство
    begin
      (Components[i] as TLabel).Caption := 'jfgygh'
    end;
  end;
end;
Или можно указать в первом примере через as любой компонент, у которого есть Caption?
Артист вне форума Ответить с цитированием
Старый 06.12.2017, 16:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а так?
Код:
    if IsPublishedProp(Components[i], 'Caption') then // Если есть свойство
    begin
        SetStrProp( Components[i],  'Caption', 'jfgygh'); // то установим его
    end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.12.2017, 16:43   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Еще так можно обдурить, но чревато. В первом коде
Цитата:
TLabel(Components[i]).Caption := 'jfgygh'
как минимум для кнопок в том числе тоже обновило. Не стал бы так делать ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.12.2017, 16:48   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Components[i].Caption := 'jfgygh' // Так не работает
А Вы чего ожидали? класс TComponent не имеет свойства Caption. Присвоение значения кэпшену приходится делать всё через тот же As
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 06.12.2017, 19:46   #5
Артист
Пользователь
 
Регистрация: 14.10.2017
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а так?
Спасибо большое. ))

Цитата:
Сообщение от Аватар Посмотреть сообщение
Еще так можно обдурить, но чревато.
Учту, спасибо. ))

Цитата:
Сообщение от Sciv Посмотреть сообщение
А Вы чего ожидали? класс TComponent не имеет свойства Caption.
Да я только учусь, ничего пока не ожидаю, но когда ошибку выдало, понял, что нету. ))
Артист вне форума Ответить с цитированием
Старый 07.12.2017, 17:47   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Как вариант можно ещё и через список Controls, но там придется делать рекурсию.
northener вне форума Ответить с цитированием
Старый 07.12.2017, 18:00   #7
Артист
Пользователь
 
Регистрация: 14.10.2017
Сообщений: 35
По умолчанию

Да через GetStrProp/SetStrProp работает. ))
Артист вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли обращаться к компонентам формы из потока ? Lolidze C# (си шарп) 4 16.08.2016 23:09
Установить Caption из БД MixanMM БД в Delphi 1 12.06.2015 14:06
Обращение к компонентам формы приложения из dll EaRLL Общие вопросы Delphi 13 13.01.2013 04:15
Обрашение к компонентам другой формы в цикле a_n_n_a Общие вопросы Delphi 13 05.02.2012 11:06
Подробная литература по всем компонентам dimonbest Свободное общение 10 21.11.2008 16:51