// Text wird in
Regionen umgewandelt und links oben am Schirm angezeigt. type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private-Deklarationen }
public
procedure minmax(var aMsg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
rgn: Hrgn;
dy, dx, breite, hoehe: integer;
sl: TStringlist;
sz: TSize;
procedure RegionText(h: hdc; x, y: integer; t: TStrings; f: THandle);
var i: integer;
begin
selectobject(h, f);
setBkMode(h, TRANSPARENT);
BeginPath(h);
for i := 0 to t.count - 1 do
textout(h, x, y + i * sz.cy, pchar(t[i]), length(t[i]));
EndPath(h);
rgn := PathToRegion(h);
end;
procedure TForm1.minmax(var aMsg: TWMGetMinMaxInfo);
begin
inherited;
with aMsg.MinMaxInfo^ do begin
ptMinTrackSize.x := breite;
ptMinTrackSize.y := hoehe;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var d: integer;
begin
cursor := crHandpoint;
d := GetSystemMetrics(SM_CYFRAME);
dy := GetSystemMetrics(SM_CYCAPTION) + d;
dx := GetSystemMetrics(SM_CXFRAME);
sl := TStringlist.create;
sl.add('Das ist ein Test');
sl.add('Das ist ein Versuch');
sl.add('DELPHI ist OK');
sl.add('DBR.Software');
sl.add('');
sl.add('Verschieben mit linker Maustaste.');
sl.add('Schließen mit Rechtsklick.');
color := clFuchsia;
with Canvas do begin
Font.size := 30;
Font.name := 'Arial'; // muss TrueTyp sein
Font.style := [fsBold];
Font.color := clred;
sz := textextent(sl[5]); // längste Zeile
breite := sz.cx + dx * 2;
hoehe := sz.cy * sl.count + dy + d;
setbounds(0, -dy, breite, hoehe);
RegionText(handle, dx, dy, sl, Font.handle);
end;
setwindowRgn(handle, rgn, true);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbleft then begin
releaseCapture;
perform(WM_SysCommand, $F012, 0);
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbright then close;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
sl.free;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
setwindowpos(handle, hwnd_topmost, 0, 0, 0, 0, swp_nosize or swp_nomove);
end;
|
Zugriffe seit 6.9.2001 auf Delphi-Ecke





