// Dieser Quellcode gibt auf der Titelleiste (Caption) einer Form einen
// Text in bestimmter Formatierung aus.

// Getestet mit D4 unter WinME

// (Für spätere Versionen [z.B. D2010 unter W7] siehe das Auskommentierte)

type 
  TForm1 = class(TForm) 
    procedure FormCreate(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
  private 
    { Private-Deklarationen } 
  public 
    procedure WMNCPaint(var Msg: TMessage); message WM_NCPAINT; 
    procedure WMNCActivate(var MSG: TMessage); message WM_NCActivate; 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM}
(*
uses UxTheme; 
 
procedure TForm1.FormActivate(Sender: TObject); 
begin 
   SetWindowTheme(Handle, '', ''); 
end; 
*)
 
const 
  txt: string = 'Das ist mein Text'; 
  links: integer = 32; 
  SchriftFarbeAktiv: TColor = clYellow; 
  SchriftFarbeInAktiv: TColor = clSilver; 
  SchriftName: string = 'Courier New'; 
  SchriftGroesse: integer = 12; 
  SchriftStil = [fsBold, fsItalic]; 
 
var 
  DC: HDC; 
  cnv: TCanvas; 
  oben: integer; 
 
procedure TForm1.FormCreate(Sender: TObject); 
var 
  h: integer; 
begin 
  DC := GetWindowDC(Handle); 
  cnv := TCanvas.Create; 
  with cnv do begin 
    handle := DC; 
    SetBkMode(handle, TRANSPARENT); 
    font.name := SchriftName; 
    font.size := Schriftgroesse; 
    font.style := SchriftStil; 
    h := Textheight(txt); 
  end; 
  oben := GetSystemMetrics(SM_CYFRAME) + (GetSystemMetrics(SM_CYCAPTION) - h) div 2; 
  caption := ''; 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  cnv.Free; 
  ReleaseDC(Handle, DC); 
end; 
 
procedure TForm1.WMNCPaint(var Msg: TMessage); 
begin 
  if GetForegroundWindow = Handle then 
    cnv.font.color := SchriftFarbeAktiv else 
    cnv.font.color := SchriftFarbeInAktiv; 
  inherited; 
  cnv.TextOut(links, oben, txt); 
end; 
 
procedure TForm1.WMNCActivate(var MSG: TMessage); 
begin 
  inherited; 
  WMNCPaint(Msg); 
end;



Zugriffe seit 6.9.2001 auf Delphi-Ecke