Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизКак реализовать следующую штуку? Найти похожие ветки
← →
Артем К. (2004-10-15 13:49) [0]Привет мастера!
Делаю свой компонент панели.
У панели есть заголовок.
На форме будет несколько таких панелек.
Надо сделать так, чтобы при выборе панели или элементов на панели заголовок панели рисовался жирным шрифтом, а при выборе другой панели - обычным шрифтом.
Заранее спасибо!
← →
Pentium133 © (2004-10-15 13:52) [1]Введи дополнительное свойство Selected, которое изменяй в момент выбора. В момент рисования анализируй значение этого свойства и делай что надо.
← →
Артем К. (2004-10-15 13:57) [2]>>Pentium133
а как реализовать момент выбора и момент снятия выбора?
← →
Pentium133 © (2004-10-15 13:58) [3]ну не знаю, ты ж компонент пишешь.
может в момент клика мышкой?
← →
Ozone © (2004-10-15 13:58) [4]Артем К. (15.10.04 13:57) [2]
А эт уже зависит от тебя. Можешь сделать при нажатии на панель, можешь при наведении... Вобщем, все в твоих руках.
← →
Артем К. (2004-10-15 14:03) [5]если я сделаю в момент клика мышкой, то как мне потом снять это выделение панели, при выборе другой панели?
← →
DiamondShark © (2004-10-15 14:06) [6]WM_SETFOCUS
WM_KILLFOCUS
← →
Pentium133 © (2004-10-15 14:06) [7]Напрмер в цикле пройти по всем панелькам и отменить Selected. У нужной установить.
← →
Pentium133 © (2004-10-15 14:08) [8]to Артем К.
Не обращай внимание на [6], а то совсем запутаешся.
← →
DiamondShark © (2004-10-15 14:10) [9]Как вариант -- перекрыть DoEnter, DoExit
← →
Артем К. (2004-10-15 14:10) [10]>>Pentium133
Можно и так, но тогда если на форме к примеру находится Edit то при передачи фокуса Editu панель будет оставаться активной (в фокусе) - а этого не должно быть.
>>DiamondShark
А если я буду делать через WM_SETFOCUS, WM_KILLFOCUS, то при передачи фокуса элементам управления, которые находятся на панели, панелт потеряет активность (фокус) - и этого не должно быть.
Как быть?
← →
DiamondShark © (2004-10-15 14:11) [11]
> Pentium133
Поцню не надо гойворить, да?
← →
Pentium133 © (2004-10-15 14:12) [12]
> Артем К. (15.10.04 14:10) [10]
Напиши-ка лучше что должно быть
← →
Артем К. (2004-10-15 14:17) [13]есть форма: на ней несколько этих панелей и прочие эл-ты управления.
если мы выбираем некоторый эл-т управления на панели (панель 1), то заголовок панели должен быть жирным, иначе если выбираем другой эл-т управления на другой панели или на форме, то заголовок панели (панель 1) должен быть обычным, также с остальными панелями.
← →
DiamondShark © (2004-10-15 14:21) [14]
> Артем К. (15.10.04 14:10) [10]
Тогда перекрывать DoEnter, DoExit
← →
DiamondShark © (2004-10-15 14:23) [15]Так... подожди...
Ты компонент пишешь, или на форме собираешь?
← →
Артем К. (2004-10-15 14:24) [16]пишу компонент конечно
← →
Артем К. (2004-10-15 14:27) [17]>>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:30) [18]DiamondShark © (15.10.04 14:21) [14]
Именно. Наиболее безболезненный способ, и делается за 2 минуты.
← →
Игорь Шевченко © (2004-10-15 14:31) [19]Артем К. (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;
← →
DiamondShark © (2004-10-15 14:33) [20]
> Артем К. (15.10.04 14:27) [17]
Вроде как да.
← →
Артем К. (2004-10-15 14:39) [21]Всем большое человеческое спасибо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.032 c