0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 13
1

Изменение цвета panel

07.05.2014, 13:25. Показов 10162. Ответов 11
Метки нет (Все метки)

Всем добрый день!
У меня на форме имеется несколько объектов Panel. Они у меня по нажатию кнопки меняют цвет.
Мне же необходимо, чтобы когда выбран определенный Panel (Panel11.SetFocus; ), по нажатию другой кнопки он менял цвет на стандартный... Т.е. когда определенный Panel в фокусе, то кнопка это должна распознавать и перекрашивать его.
Пыталась сделать через If ... then, но не получилось.
Заранее спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2014, 13:25
Ответы с готовыми решениями:

Изменение цвета в созданном программно компоненте Panel
Добрый вечер. Создал несколько компонентов panel, подскажите, как обращаться и назначать им цвета?...

Изменение вида Panel...
Всем доброго времени суток. Не в курсе возможно ли у стандартного компонента Panel изменить цвет...

Изменение цвета
Как и с помощью какого компонента можно реализовать следующие. В картинке представил примерно как...

Изменение цвета текста
Здравствуйте! Подскажите, пожалуйста, как можно изменить цвет текста в memo, лишь определенного...

11
29 / 29 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.05.2014, 13:32 2
То есть одна кнопка для покраски panelей? То есть если выбран Panel1 то кнопка покрасит его, а если panel2, то эта же кнопка покрасит panel2?
0
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 13
07.05.2014, 13:41  [ТС] 3
Да, именно так. Просто эта кнопка у меня как бы очищает Panel-ы от цвета, который был нанесен на них другой кнопкой.
0
пофигист широкого профиля
4437 / 2927 / 828
Регистрация: 15.07.2013
Сообщений: 16,859
07.05.2014, 13:56 4
Цитата Сообщение от anna_mazurowa Посмотреть сообщение
Т.е. когда определенный Panel в фокусе, то кнопка это должна распознавать
Если на эту кнопку нажать, то фокус переходит к ней.
0
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 13
07.05.2014, 13:59  [ТС] 5
Цитата Сообщение от northener Посмотреть сообщение
Если на эту кнопку нажать, то фокус переходит к ней.
Нет, фокусировка происходит по нажатию на Panel.
Ну то есть мы нажимаем на Panel, таким образом фокусируясь на нем, и уже через кнопку мы должны ему вернуть стандартный цвет
0
5058 / 3944 / 1303
Регистрация: 14.04.2014
Сообщений: 18,157
Записей в блоге: 18
07.05.2014, 14:01 6
у панелей нет фокуса. может поэтому?
фокус - это место, куда пойдет ввод от пользователя
в панели вводить некуда, фокуса нет.

как вы выбираете панель? кликом? тогда в обработчике клика procedure PanelClick(Sender:TObject) перебирайте все панели и если они <> Sender то один цвет, иначе - другой
0
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 13
07.05.2014, 14:08  [ТС] 7
Цитата Сообщение от krapotkin Посмотреть сообщение
тогда в обработчике клика procedure PanelClick(Sender:TObject) перебирайте все панели и если они <> Sender то один цвет, иначе - другой
Т.е. так?
Delphi
1
2
3
4
procedure TForm5.Panel1Click(Sender: TObject);
begin
Panel1<>Sender;
end;
Или я что-то не догоняю...
А потом по кнопке перебираем так?
Delphi
1
if Panel1<>Sender then Panel1.Color:=clRed ?
0
5058 / 3944 / 1303
Регистрация: 14.04.2014
Сообщений: 18,157
Записей в блоге: 18
07.05.2014, 14:28 8
нужно сделать список панелей
если их мало, то просто в лоб
всем присвоить один и тот же обработчик и там написать
Delphi
1
2
3
4
5
6
7
8
procedure TForm5.PanelClick(Sender: TObject);
begin
  if Panel1<>Sender then panel1.color := clRed else panel1.color := clGreen;
  if Panel2<>Sender then panel2.color := clRed else panel2.color := clGreen;
  if Panel3<>Sender then panel3.color := clRed else panel3.color := clGreen;
  if Panel4<>Sender then panel4.color := clRed else panel4.color := clGreen;
  if Panel5<>Sender then panel5.color := clRed else panel5.color := clGreen;
end;
можно написать более элегантно )))
0
пофигист широкого профиля
4437 / 2927 / 828
Регистрация: 15.07.2013
Сообщений: 16,859
07.05.2014, 14:28 9
Цитата Сообщение от anna_mazurowa Посмотреть сообщение
Нет, фокусировка происходит по нажатию на Panel.
А по нажатию на кнопку фокусировка съезжает с панели.
0
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 13
07.05.2014, 15:12  [ТС] 10
Цитата Сообщение от northener Посмотреть сообщение
А по нажатию на кнопку фокусировка съезжает с панели.
Ну да, вроде так
Цитата Сообщение от krapotkin Посмотреть сообщение
нужно сделать список панелей
если их мало, то просто в лоб
всем присвоить один и тот же обработчик и там написать
Код Delphi
1
2
3
4
5
6
7
8
procedure TForm5.PanelClick(Sender: TObject);
begin
* if Panel1<>Sender then panel1.color := clRed else panel1.color := clGreen;
* if Panel2<>Sender then panel2.color := clRed else panel2.color := clGreen;
* if Panel3<>Sender then panel3.color := clRed else panel3.color := clGreen;
* if Panel4<>Sender then panel4.color := clRed else panel4.color := clGreen;
* if Panel5<>Sender then panel5.color := clRed else panel5.color := clGreen;
end;
Я Вас поняла, только вот в чем вся загвоздка... У меня панели меняют 3 раза цвет, то есть допустим есть Панель, по нажатию первой кнопки она окрашивается в зеленый, по нажатию второй - в красный. Это у меня делалось таким образом, что если в ComboBox ItemIndex:=1, то окрашивалась 1 панель, если ItemIndex:=2, то 2 панель.
А третья кнопка должна как бы "Очищать" панели от этих цветов... Ну вот как то так, попыталась объяснить понятнее....
0
5058 / 3944 / 1303
Регистрация: 14.04.2014
Сообщений: 18,157
Записей в блоге: 18
07.05.2014, 15:44 11
Лучший ответ Сообщение было отмечено anna_mazurowa как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
FPanelClicked:TPanel;
FColor:TColor;
 
procedure TForm1.PanelClick(Sender:TObject);
begin
  FPanelClicked:=Sender as TPanel;
  UpdatePanels;
end;
procedure TForm1.UpdatePanels;
begin
  if Panel1=FPanelClicked then panel1.color := FColor else panel1.color := clbtnFace;
  if Panel2=FPanelClicked then panel2.color := FColor else panel2.color := clbtnFace;
  if Panel3=FPanelClicked then panel3.color := FColor else panel3.color := clbtnFace;
  if Panel4=FPanelClicked then panel4.color := FColor else panel4.color := clbtnFace;
  if Panel5=FPanelClicked then panel5.color := FColor else panel5.color := clbtnFace;
end;
procedure TForm1.Btn1Click(Sender:TObject);
begin
  FColor := clRed;
  UpdatePanels;
end;
procedure TForm1.Btn2Click(Sender:TObject);
begin
  FColor := clGreen;
  UpdatePanels;
end;
procedure TForm1.Btn3Click(Sender:TObject);
begin
  FColor := clBtnFace;
  FPanelClicked:=NIL;
  UpdatePanels;
end;
1
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 13
07.05.2014, 15:52  [ТС] 12
Спасибо большое))))Теперь все понятно!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2014, 15:52

Изменение цвета кнопки
Помогите разобраться Необходимо создать кнопку и изменить ее цвет Заранее спасибо!!!

Изменение цвета в Ellipse
Необходимо в стороннем окне (игре) отображать точки в виде окружностей. Использую Ellipse. Всё...

Изменение цвета даты
Собственно стоит следующая задача: от определенной даты выделять числа на 4 цвета поочередно. При...

Изменение цвета формы
С помощью контекстного меню надо поменять цвет формы ввожу сей код, ошибок не выдает, но и не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.