Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как программно спрятать или показать заголовок окна TitleBar

Delphi , Программа и Интерфейс , Заголовок формы

Как программно спрятать или показать заголовок окна TitleBar


procedure TForm1.HideTitlebar;
var
  Save: Longint;
begin
  if BorderStyle=bsNone then
    Exit;
  Save:=GetWindowLong(Handle, GWL_STYLE);
  if (Save and WS_CAPTION)=WS_CAPTION then
  begin
    case BorderStyle of
      bsSingle, bsSizeable:
        SetWindowLong(Handle, GWL_STYLE, Save and (not WS_CAPTION) or WS_BORDER);
      bsDialog:
        SetWindowLong(Handle, GWL_STYLE, Save and
        (not WS_CAPTION) or DS_MODALFRAME or WS_DLGFRAME);
    end;
    Height:=Height-GetSystemMetrics(SM_CYCAPTION);
    Refresh;
  end;
end;

procedure TForm1.ShowTitlebar;
var
  Save: Longint;
begin
  if BorderStyle=bsNone then
    Exit;
  Save:=GetWindowLong(Handle, GWL_STYLE);
  if (Save and WS_CAPTION)<>WS_CAPTION then
  begin
    case BorderStyle of
      bsSingle, bsSizeable:
        SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or WS_BORDER);
      bsDialog:
        SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or
        DS_MODALFRAME or WS_DLGFRAME);
    end;
    Height:=Height+getSystemMetrics(SM_CYCAPTION);
    Refresh;
  end;
end;

Вот перевод текста на русский язык:

Это код Delphi, который программно скрывает и отображает панель заголовка формы (окна). Вот разбивка на что каждый процедура делает:

HideTitlebar 1. Проверяет, если текущий стиль рамки равен bsNone, то выходит из процедуры. 2. Сохраняет текущий стиль окна с помощью GetWindowLong с параметром GWL_STYLE. 3. Проверяет, если сохраненный стиль окна имеет флаг WS_ CAPTION, указывающий на присутствие панели заголовка. 4. Если панель заголовка есть и стиль рамки равен либо bsSingle, либо bsSizeable, то устанавливает стиль окна, удаляя флаг WS_ CAPTION и добавляя флаг WS_BORDER. 5. Если стиль рамки равен bsDialog, то устанавливает стиль окна, удаляя флаг WS_ CAPTION, добавляя флаг DS_MODALFRAME (для диалогового поведения) и оставляя флаг WS_DLGFRAME (для рамки диалога). 6. Обновляет высоту формы, вычитывая высоту панели заголовка с помощью GetSystemMetrics(SM_CYCAPTION). 7. Вызывает Refresh, чтобы обновить окно.

ShowTitlebar 1. Проверяет, если текущий стиль рамки равен bsNone, то выходит из процедуры. 2. Сохраняет текущий стиль окна с помощью GetWindowLong с параметром GWL_STYLE. 3. Проверяет, если сохраненный стиль окна не имеет флага WS_CAPTION, указывающего на отсутствие панели заголовка. 4. Если панель заголовка отсутствует и стиль рамки равен либо bsSingle, либо bsSizeable, то устанавливает стиль окна, добавляя флаг WS_CAPTION и оставляя флаг WS_BORDER. 5. Если стиль рамки равен bsDialog, то устанавливает стиль окна, добавляя флаг WS_CAPTION, оставляя флаг DS_MODALFRAME (для диалогового поведения) и оставляя флаг WS_DLGFRAME (для рамки диалога). 6. Обновляет высоту формы, добавляя высоту панели заголовка с помощью GetSystemMetrics(SM_CYCAPTION). 7. Вызывает Refresh, чтобы обновить окно.

Обратите внимание, что эти процедуры работают только в том случае, если стиль рамки не установлен в bsNone. Кроме того, они не влияют на видимость панели заголовка сразу; вам нужно вызвать Refresh или InvalidateRect (или эквивалент) для обеспечения изменения эффекта.

Альтернативное решение может быть использование свойства TFormBorderStyle и установкой его в значение либо fsNone (скрытие панели заголовка), либо другое значение (отображение панели заголовка). Этот подход проще и более прямолинейный, чем использование GetWindowLong и SetWindowLong. Однако данный код предоставляет более тонкую настройку поведения панели заголовка.

В статье описывается способ программного изменения или скрытия заголовка окна TitleBar в Delphi, используя процедуры HideTitlebar и ShowTitlebar.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Заголовок формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 20:03:39/0.0035560131072998/0