![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как реализовать следующую штуку? [D7, WinXP]
Артем К. © (2004-10-15 13:49:00)Привет мастера!
Делаю свой компонент панели.
У панели есть заголовок.
На форме будет несколько таких панелек.
Надо сделать так, чтобы при выборе панели или элементов на панели заголовок панели рисовался жирным шрифтом, а при выборе другой панели - обычным шрифтом.
Заранее спасибо!
Артем К. (2004-10-15 14:39:00) [1]Всем большое человеческое спасибо!
DiamondShark (2004-10-15 14:33:00) [2]
> Артем К. (15.10.04 14:27) [17]
Вроде как да.
Игорь Шевченко (2004-10-15 14:31:00) [3]Артем К. (15.10.04 14:27) [17]
procedure TMyPanel.DoEnter;
begin
inherited;
Font.Style := Font.Style + [fsBold];
end;
procedure TMyPanel.DoExit;
begin
inherited;
Font.Style := Font.Style - [fsBold];
end;
Игорь Шевченко (2004-10-15 14:30:00) [4]DiamondShark © (15.10.04 14:21) [14]
Именно. Наиболее безболезненный способ, и делается за 2 минуты.
Артем К. (2004-10-15 14:27:00) [5]>>DiamondShark
так правильно будет?
private
FSelected: boolean;
procedure DoEnter; override;
procedure DoExit; override;
procedure MyPanel.DoEnter;
begin
inherited;
FSelected := true;
Invalidate;
end;
procedure MyPanel.DoExit;
begin
inherited;
FSelected := false;
Invalidate;
end;
Артем К. (2004-10-15 14:24:00) [6]пишу компонент конечно
DiamondShark (2004-10-15 14:23:00) [7]Так... подожди...
Ты компонент пишешь, или на форме собираешь?
DiamondShark (2004-10-15 14:21:00) [8]
> Артем К. (15.10.04 14:10) [10]
Тогда перекрывать DoEnter, DoExit
Артем К. (2004-10-15 14:17:00) [9]есть форма: на ней несколько этих панелей и прочие эл-ты управления.
если мы выбираем некоторый эл-т управления на панели (панель 1), то заголовок панели должен быть жирным, иначе если выбираем другой эл-т управления на другой панели или на форме, то заголовок панели (панель 1) должен быть обычным, также с остальными панелями.
Pentium133 (2004-10-15 14:12:00) [10]
> Артем К. (15.10.04 14:10) [10]
Напиши-ка лучше что должно быть
DiamondShark (2004-10-15 14:11:00) [11]
> Pentium133
Поцню не надо гойворить, да?
Артем К. (2004-10-15 14:10:00) [12]>>Pentium133
Можно и так, но тогда если на форме к примеру находится Edit то при передачи фокуса Editu панель будет оставаться активной (в фокусе) - а этого не должно быть.
>>DiamondShark
А если я буду делать через WM_SETFOCUS, WM_KILLFOCUS, то при передачи фокуса элементам управления, которые находятся на панели, панелт потеряет активность (фокус) - и этого не должно быть.
Как быть?
DiamondShark (2004-10-15 14:10:00) [13]Как вариант -- перекрыть DoEnter, DoExit
Pentium133 (2004-10-15 14:08:00) [14]to Артем К.
Не обращай внимание на [6], а то совсем запутаешся.
Pentium133 (2004-10-15 14:06:00) [15]Напрмер в цикле пройти по всем панелькам и отменить Selected. У нужной установить.
DiamondShark (2004-10-15 14:06:00) [16]WM_SETFOCUS
WM_KILLFOCUS
Артем К. (2004-10-15 14:03:00) [17]если я сделаю в момент клика мышкой, то как мне потом снять это выделение панели, при выборе другой панели?
Ozone (2004-10-15 13:58:00) [18]Артем К. (15.10.04 13:57) [2]
А эт уже зависит от тебя. Можешь сделать при нажатии на панель, можешь при наведении... Вобщем, все в твоих руках.
Pentium133 (2004-10-15 13:58:00) [19]ну не знаю, ты ж компонент пишешь.
может в момент клика мышкой?
Артем К. (2004-10-15 13:57:00) [20]>>Pentium133
а как реализовать момент выбора и момент снятия выбора?