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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2012, 05:40   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Как программно изменить цвет любого компонента?

Доброе утро! Мне нужно программно изменить цвет активного компонента, т.е. чтобы когда выбираешь какой-то компонент, то можно менять его цвет, например. Раз уж нельзя просто написать
Код:
 Form1.' + <обычное строковое имя компонента> + .Color:=clGreen;
то пробовал через
Код:
procedure TForm1.sColorBox1Change(Sender: TObject);
begin
 TWinControl(ActiveControl).Brush.Color:=Form1.sColorBox1.Color;
end;
но цвет компонента не меняется.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 08.05.2012, 06:13   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
procedure TForm1.sColorBox1Change(Sender: TObject);
begin
 TWinControl(ActiveControl).Brush.Color:=Form1.sColorBox1.Color;
 //TWinControl(ActiveControl).Repaint();
end;
Наверное потому, что активным контролом при этом является сам sColorBox1 ?
EUGY вне форума Ответить с цитированием
Старый 08.05.2012, 08:26   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ну да, скорее всего. А как можно тогда получить имя предыдущего выбранного компонента?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 08.05.2012, 08:28   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

в OnEnter компонента менять цвет, в OnExit восстанавливать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.05.2012, 09:06   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Аватар, не, это-то понятно что так можно сделать. Мне надо чтобы можно было менять цвет у любого выбранного компонента. Пользователь может выбрать совершенно любой компонент и только один.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 08.05.2012, 09:11   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Ну используй тогда глобальную переменную, в которую пиши что за компонент был выбран.
FaTaL вне форума Ответить с цитированием
Старый 08.05.2012, 09:25   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

И какого типа должна быть эта переменная?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 08.05.2012, 09:42   #8
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Что значит выбрать?

ActiveControl сам по себе уже TWinControl.
=master= вне форума Ответить с цитированием
Старый 25.06.2014, 11:03   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Добрый день!
Поднимаю тему, ибо оказанная помощь не помогла мне решить мой вопрос.
У меня цвет компонента должен измениться при нажатии на кнопку через диалог., т.е.
что-то типа:
Код:
 if ColorDialog.Execute then
 begin
  //меняем цвет компонента, имя которого мне известно (хранится в Label1.Caption),    
     класс компонента нужного всегда один - известный.
 end;
Нужна помощь?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 25.06.2014, 11:40   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var xComponent: TComponent;
begin
  if ColorDialog1.Execute then begin
    xComponent:=FindComponent(Label1.Caption);
    if xComponent is TWinControl then begin
      TWinControl(xComponent).Brush.Color:=ColorDialog1.Color;
      TWinControl(xComponent).Repaint;
    end;
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.06.2014 в 11:42.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно изменить цвет "компонента"? Смотрим внутри... Vova777 Общие вопросы Delphi 3 15.02.2012 05:56
Как программно изменить цвет кнопки в Delphi Source-of-life Помощь студентам 8 13.04.2010 21:18
как менять цвет компонента по условию kenta Общие вопросы Delphi 1 20.02.2010 20:53
Как с помощью JavaScript изменить цвет фона ячеек в таблице,так что бы можно было выбрать цвет из списка Gotessa JavaScript, Ajax 1 09.05.2009 16:05
Как можно изменить цвет полосы меню компонента TMainmenu на форме? SkAndrew Общие вопросы Delphi 6 11.08.2008 17:35