Маленькая область заголовка
Автор: Neil
Вам необходима небольшая область заголовка подобно той, которую использует
Microsoft для управления палитры в VB, правильно? Около 1/3 от высоты нормальной
области заголовка, без текста и без блока системных кнопок? Хорошо, я могу дать
вам небольшой пример.
- Создайте вторичную форму и установите BorderStyle в bsSingle
- Разместите на форме компонент Label, удалите значение свойства Caption,
установите Color в clBlue и Align в alTop. Задайте высоту компонента такую,
какую высоту заголовка вы хотите
- Добавьте следующие два метода к вашей форме:
PROCEDURE TForm2.CreateParams(VAR Params: TCreateParams);
BEGIN
Inherited CreateParams(Params);
WITH Params DO
Style := (Style OR WS_POPUP) AND NOT WS_DLGFRAME;
END;
PROCEDURE TForm2.wmNCHitTest(VAR Msg: TWMNCHitTest);
BEGIN
Inherited;
WITH Msg DO
IF YPos-Top <= Label2.Height THEN
Result := HTCAPTION;
END;
|
- Объявите эти функции в секции private вашего модуля:
PROCEDURE CreateParams(VAR Params: TCreateParams); override;
PROCEDURE wmNCHitTest(VAR Msg: TWMNCHitTest);
message WM_NCHITTEST;
|
Установите свойство вторичной формы Visible в True. Теперь у вас есть
плавающее окно с мальнокой областью заголовка. Для создания также "небольшого"
системного меню, НАРИСУЙТЕ его на форме и в ответ на событие WM_NCHITTEST
установите Result в HTSYSMENU, если мышь в пределах области заголовка.
|