Добавить значок границы в форму - PullRequest
5 голосов
/ 31 августа 2010

Используя Delphi, я хотел бы добавить еще одну кнопку к значку границы кнопки; закрыть, максимизировать, минимизировать. Есть идеи как это сделать?

Ответы [ 3 ]

5 голосов
/ 31 августа 2010

Это было легко сделать до Windows Aero. Вам просто нужно было прослушать сообщения WM_NCPAINT и WM_NCACTIVATE, чтобы нарисовать их в верхней части панели заголовков, и аналогичным образом вы могли использовать другие сообщения WM_NC* для ответа на щелчки мыши и т. Д., В частности WM_NCHITTEST, WM_NCLBUTTONDOWN и WM_NCLBUTTONUP.

Например, чтобы нарисовать строку в строке заголовка, вам нужно всего лишь сделать

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

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

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

procedure TForm1.DrawOnCaption;
var
  dc: HDC;
begin
  dc := GetWindowDC(Handle);
  try
    TextOut(dc, 20, 2, 'test', 4);
  finally
    ReleaseDC(Handle, dc);
  end;
end;

end.

Теперь, это не работает с включенным Aero. Тем не менее, есть способ рисовать на панели заголовка; Я сделал это, но это намного сложнее. См. эту статью для рабочего примера.

2 голосов
/ 01 сентября 2010

Крис Роллистон написал подробный блог о создании пользовательской строки заголовка в Vista и Windows 7 .

Он также написал дополнительную статью и разместил пример кода на CodeCentral .

1 голос
/ 01 сентября 2010

Да, установите для свойства стиля границы формы значение bsNone и реализуйте собственную строку заголовка со всеми кнопками и настраиваемым поведением, которые вам нравятся.

...