Hallo,
ich erzeuge zur Laufzeit eine PaintBox, die über allen
Komponenten, sprich im Vordergrund, auf der Form liegen
soll. Zur Laufzeit ist diese noch nicht sichbar.
(Visible = false)
Wenn sie angezeigt wird, dann liegt sie über allen
Komponenten, ausser über "bedienbare" Komponenten, wie
Button und CheckBox.
Wie bekomm ich die PaintBox auch über den Button und
CheckBox angezeigt?
Anbei mal etwas Code...
erzeugen:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
//DoubleBuffered setzen
MainForm.DoubleBuffered := true;
//PaintBox erzeugen
PaintBox := TPaintBox.Create(self);
with PaintBox do
begin
//Parent setzen
Parent := self;
//Position und Größe definieren
Left := 0;
Top := 0;
Height := MainForm.ClientHeight;
Width := MainForm.ClientWidth;
//nicht anzeigen
Visible := false;
//
OnPaint := OnPaintPaintBox;
end;
Die Paint-Procedure:
Delphi-Quellcode:
procedure TMainForm.OnPaintPaintBox(Sender: TObject);
var
LogFont : TLogFont;
Font_Winkel : TFont;
begin
with PaintBox.Canvas
do
begin
//Hintergrundfarbe setzen
Brush.Color := clGray;
//Hintergrund setzen
FillRect(ClientRect);
//Font definieren
Font.
Name := '
Arial';
Font.Size := 100;
Font.Color := clRed;
//Extra-Font erzeugen
Font_Winkel := TFont.Create;
try
//Font an Extra-Font übergeben
Font_Winkel.Assign(Font);
GetObject(Font_Winkel.Handle, SizeOf(LogFont), @LogFont);
LogFont.lfEscapement := 320;
LogFont.lfOrientation := 320;
SetBkMode(
Handle, TRANSPARENT);
//Extra-Font an Font übergeben
Font_Winkel.Handle := CreateFontIndirect(LogFont);
Font.Assign(Font_Winkel);
finally
//Font löschen und freigeben
FreeAndNil(Font_Winkel);
end;
//Textausgabe
TextOut(50, 210, '
Text');
end;
end;