Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Text in Titelzeile eines Formulars positionieren

  Alt 4. Nov 2003, 01:31
Oder besser:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
    procedure WMNCPAINT(var Msg: TMessage); Message WM_NCPAINT;
    procedure WMNCACTIVATE(var msg: TMessage); Message WM_NCACTIVATE;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

const
  MYCAPTION = 'Meine zentrierte Fenster-Caption';

procedure PaintCaption(hWnd: THandle; WndCaption: String);
var
  dc : HDC;
  CaptRect, WndRect: TRect;
begin
  dc := GetWindowDC(hWnd);
  GetWindowRect(hWnd, WndRect);
  CaptRect.Left := GetSystemMetrics(SM_CXEDGE);
  CaptRect.Top := GetSystemMetrics(SM_CYEDGE)+2;
  CaptRect.Right := WndRect.right-WndRect.Left-GetSystemMetrics(SM_CYEDGE);
  CaptRect.Bottom := GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYEDGE);
  SetBkMode(dc, TRANSPARENT);
  SetTextColor(dc, RGB(255, 255, 255));
  DrawText(dc, @WndCaption[1], lstrlen(@WndCaption[1]), CaptRect, DT_CENTER or DT_VCENTER);
  ReleaseDC(hWnd, dc);
end;

procedure TForm1.WMNCPAINT(var Msg: TMessage);
begin
  Inherited;
  if msg.Msg = WM_NCPAINT then
  begin
    PaintCaption(Self.Handle, MyCaption);
  end;
end;

procedure TForm1.WMNCACTIVATE(var msg: TMessage);
begin
  Inherited;
  if msg.Msg = WM_NCACTIVATE then
    PaintCaption(Form1.Handle, MyCaption);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat