Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PaintBox über Komponenten legen (https://www.delphipraxis.net/121973-paintbox-ueber-komponenten-legen.html)

Helmi 7. Okt 2008 19:37


PaintBox über Komponenten legen
 
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;

Dax 7. Okt 2008 19:40

Re: PaintBox über Komponenten legen
 
Das geht, wenn TPaintBox direkt con TGraphicControl ableitet (was ich vermute), nicht - die Paintbox ist einfach nur eine umrissene Region auf der Form. Wenn du die Box allerdings auf ein Panel packst, sollte es funktionieren.

Helmi 7. Okt 2008 20:15

Re: PaintBox über Komponenten legen
 
Danke!

hab das ganze jetzt auf ein Panel gelegt


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz