Внешний вид сайта:

Как вывести дополнительный заголовок формы

По умолчанию, свойство Caption формы выводит текст в заголовке формы рядом с системным меню. Если Вы хотите добавить свой собственный текст в заголовок формы, не трогая ее свойство Caption, нужно работать с сообщением Windows WM_NCPAINT.

Пользовательский текст в заголовке формы

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

Обратите внимание, что Вам нужно перехватывать также сообщение WM_NCACTIVATE. Это сообщение посылается окну, когда оно активируется или деактивируется. Без обработки сообщения WM_NCACTIVATE текст пользователя из заголовка исчезнет, когда форма потеряет фокус.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure WMNCPaint(
        var Msg: TWMNCPaint); message WM_NCPAINT;
    procedure WMNCActivate(
        var Msg: TWMNCActivate); message WM_ACTIVATE;
    procedure DrawCaption;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.DrawCaption;
const
  sText = 'Текст в заголовке';
var
  canvas: TCanvas;
begin
  canvas:= TCanvas.Create;
  try
    canvas.Handle:= GetWindowDC(Self.Handle);
    with canvas do
    begin
      Brush.Style:= bsClear;
      Font.Color:= clYellow;
      TextOut(
        { Отступ справа }
        Self.Width - 150,
        { Отступ сверху }
        10,
        { Собственно, текст }
         sText);
    end;
  finally
    ReleaseDC(Self.Handle, canvas.Handle);
    canvas.Free;
  end;
end;

procedure TForm1.WMNCActivate(var Msg: TWMNCActivate);
begin
  inherited;
  DrawCaption;
end;

procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
begin
  inherited;
  DrawCaption;
end;

end.

Комментарии

Нет комментариев. Ваш будет первым!