Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1096530257
Nikolay_S
2004-09-30 11:44
2004.10.31
DBGridEh - как сделать нумерацию страниц при печати?


3-1096542714
UnDISCOvery
2004-09-30 15:11
2004.10.31
БД Access - "Обновление невозможно; установлена блокировка"


3-1096544719
Term
2004-09-30 15:45
2004.10.31
Запрос на модификацию записи


4-1095945717
shelest
2004-09-23 17:21
2004.10.31
работа с TService


1-1097693061
Colonel
2004-10-13 22:44
2004.10.31
StayOnTop





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский