Маленькая область заголовка

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: 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, если мышь в пределах области заголовка.

{/codecitation}

Добавить комментарий