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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2014, 16:26   #11
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Есть такое замечательное в TComponent и называется FindComponent. Если, компонент принадлежит форме, то надо иметь ещё и дескриптор этой формы(Handle), его получаем через FindWindow. Дальше приводим типы к типу TForm. А уже из него вызываем FindComponent, который приводим к типу компонента или TWinControl. А у него уже изменяем свойства.
Если действия происходят в классе формы, на которой компонент, то искать форму не надо. Можно сразу FindComponent.
Пример кода:
Код:
//процедура описанная в классе формы.
begin
(FindComponent('Имя_Компонента') as TWinControl).Height:=0; //изменяем свойство Height у компонента. 
//P.S. Компонент должен быть наследником TWinControl. 
end;
А почему не работает-то так?
Код:
begin
(FindComponent('Имя_Компонента') as TPanel).Color:=clRed; 
end;
Только странно почему нельзя поменять цвет когда TWinControl?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 09.08.2014 в 16:28.
artemavd вне форума Ответить с цитированием
Старый 09.08.2014, 18:09   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А почему не работает-то так?
Еще раз спрашиваю: Какого класса у тебя компонент?
Цитата:
почему нельзя поменять цвет когда TWinControl?
Наверное потому что у него нет свойства Color )
Именно поэтому нужно приведение типов. А вот во что - это ты должен сказать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2014, 18:31   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Еще раз спрашиваю: Какого класса у тебя компонент?
TsPanel. Если я правильно тебя понял.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 09.08.2014, 22:18   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
TsPanel
Вот. А теперь посмотрим на твой код:
Цитата:
(FindComponent('Имя_Компонента') as TPanel).Color:=clRed;
Разницу видишь? Ты приводишь не к тому что нужно типу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2014, 09:34   #15
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Свойство Color у TPanel правильно будет описано в классе TCustomPanel. К этому типу приводить надо.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскль,Дан массив A(n), разработать программу, которая позволяет выполнить с массивом следующие действия икше Помощь студентам 1 01.12.2012 20:07
Используя компоненту Edit выполнить следующие действия. Аделинка Помощь студентам 2 31.03.2011 14:42
Выполнить действия при закрытии программы Lauri Общие вопросы Delphi 2 08.02.2011 02:34
Выполнить действия над машинными кодами Dimext Общие вопросы C/C++ 1 25.10.2010 18:46
Выполнить действия после отображения формы zhefran Общие вопросы Delphi 15 14.08.2008 16:50