Frage

Mit Delphi Ich möchte einen anderen Knopf an der Grenze Symbolschaltflächen hinzuzufügen; schließen, maximize, minimieren. Alle Ideen, wie dies zu tun?

War es hilfreich?

Lösung

Dies war leicht vor Windows Aero zu tun. Sie hatten einfach die WM_NCPAINT und WM_NCACTIVATE Nachrichten abzuhören oben auf der Titelleiste zu ziehen, und in ähnlicher Weise könnte man die anderen WM_NC* Nachrichten reagieren auf Mausklicks usw., insbesondere WM_NCHITTEST, WM_NCLBUTTONDOWN und WM_NCLBUTTONUP verwenden.

Zum Beispiel eine Zeichenfolge auf der Titelleiste ziehen, können Sie nur tun mußten,

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.

Nun, dies ermöglicht nicht mit Aero arbeiten. Dennoch gibt es eine Möglichkeit, auf der Titelleiste zu ziehen; Ich habe das getan, aber es ist viel komplizierter. Siehe dieser Artikel für ein Arbeitsbeispiel .

Andere Tipps

Chris Rolliston einen ausführlichen Blog schrieb über eine benutzerdefinierte Titelleiste auf Vista und Windows 7 erstellen .

Er schrieb auch ein Follow-up-Artikel und geposteten Beispielcode auf Codecentral .

Ja, stellen Sie die Rahmenstil-Eigenschaft auf bsNone der Form und realisiert einen eigenen Titelleiste mit allen Tasten und individuellen Verhalten, das Sie wie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top