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

Спрятать Titlebar

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

Спрятать Titlebar


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

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

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  HideTitlebar; 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  ShowTitlebar; 
end;

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

В предоставленном коде Delphi используется для скрытия или отображения заголовка формы в зависимости от значения свойства BorderStyle. Заголовок можно скрыть, установив стиль границы в bsNone, а затем снова отобразить, изменяя стиль границы обратно на один из других значений (bsSingle, bsSizeable или bsDialog).

Работа кода происходит следующим образом:

  1. Когда форма создается впервые, ее заголовок виден.
  2. Когда пользователь кликает по кнопке 1, вызывается процедура HideTitlebar. Эта процедура проверяет, не равно ли значение стиля границы bsNone. Если это так, то она скрывает заголовок, изменяя стиль окна и корректируя высоту формы.
  3. Когда пользователь кликает по кнопке 2, вызывается процедура ShowTitlebar. Эта процедура проверяет, не равно ли значение стиля границы bsNone. Если это так, то она отображает заголовок снова, изменяя стиль окна обратно к его оригинальному значению и корректируя высоту формы.

Некоторые предложения по улучшению кода:

  • Вместо использования двух отдельных процедур (HideTitlebar и ShowTitlebar), которые выполняют практически то же самое, но с разными условиями, можно создать одну процедуру, которая проверяет, равно ли значение стиля границы bsNone, и выполняет соответствующие действия. Это сделает ваш код более компактным и проще для обслуживания.

  • Вам может потребоваться добавить ошибку проверки, чтобы убедиться, что handle формы является валидным перед попыткой изменить стиль окна или корректировать высоту формы.

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  BorderStyle := bsNone;
  ChangeTitlebarVisibility;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  BorderStyle := bsSingle; // или любым другим стилем границы, который вы хотите использовать
  ChangeTitlebarVisibility;
end;

В этом коде создается одна процедура ChangeTitlebarVisibility, которая проверяет, равно ли значение стиля границы bsNone, и выполняет соответствующие действия. Кнопочные события теперь просто изменяют стиль границы и вызывают эту новую процедуру, что делает ваш код более компактным и проще для обслуживания.

Статья посвящена созданию процедур для скрытия и отображения панели заголовка в приложении Delphi, а также примерам использования этих процедур на практике.


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

Получайте свежие новости и обновления по 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 19:59:25/0.003695011138916/0