publiс
procedure CreateParams (var Params: TCreateParams); override;
Это единственный способ использовать некоторые специфические оконные стили, которые нельзя получить, используя только
лишь свойства форм. Перечень оконных стилей и расширенных стилей содержится в электронной справке по API, в разделах
CreateWindow и CreateWindowEx. Обратите внимание, что в Win32 API поддерживаются стили для данных функций, включая те,
которые относятся к окнам инструментов.
Чтобы продемонстрировать использование данного подхода, я написал пример NoTitle. Эта программа позволяет вам создавать
окно без заголовка. Прежде всего необходимо удалить стандартный заголовок, однако при этом сохранить фрейм изменения
размера. Для этого требуется настроить соответствующие стили:
procedure TForm1.CreateParams (var Params: TCreateParams);
begin
inherited CreateParams (Params);
Params.Style := (Params.Style or ws_Popup) and not ws_Caption;
end;
Чтобы удалить заголовок, мы должны заменить перекрывающийся стиль на всплывающий стиль, в противном случае заголовок будет неизменяемым. Как добавить свой собственный заголовок? Я разместил метку, выровненную по верхней границе формы, и небольшую кнопку в конце.

Чтобы обеспечить корректное функционирование ложного заголовка, мы должны сообщить системе, что операции мыши, выполняемые в отношении данной области, соответствуют операциям мыши, выполняемым в отношении обычного заголовка. Этого можно достичь, если организовать перехват сообщения wm_NCHitTest операционной системы Windows. Это сообщение часто посылается Windows для того, чтобы определить, в каком месте находится мышь. Если щелчок произошел в клиентской области и на метке, мы можем предположить, что мышь находится в области заголовка. При этом устанавливается соответствующий результат:
procedure TForm1.HitTest (var Msg: TWmNCHitTest);
// сообщение wmJkHitTest
begin
inherited;
if (Msg.Result = htClient) and
(Msg.YPos < Label 1.Height + Top + GetSystemMetrics (sm_cyFrame)) then
Msg.Result := htCaption;
end;
Функция API под названием GetSystemMetrics, применяемая в приведенном ранее листинге, используется для того, чтобы запросить операционную систему о размере различных визуальных элементов. Важно выполнять этот запрос каждый раз (и не кэшировать результат), так как пользователи могут перенастраивать большую часть этих элементов при помощи страницы Appearance (оформление) раздела Desktop (рабочий стол) панели управления ОС, а также используя другие пара метры Windows. При щелчке на небольшой кнопке в рамках соответствующего обработчика OnClick происходит обращение к методу Cose. Чтобы удержать кнопку в данной позиции даже при изменении размера окна, используется привязка. Для этого свойству Anchors присваивается значение [akTop, akRight]. Форма обладает также ограничениями на размер, благодаря этому пользователь не может сделать ее слишком маленькой.