AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PaintBox über Komponenten legen

Ein Thema von Helmi · begonnen am 7. Okt 2008 · letzter Beitrag vom 7. Okt 2008
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

PaintBox über Komponenten legen

  Alt 7. Okt 2008, 19:37
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;
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: PaintBox über Komponenten legen

  Alt 7. Okt 2008, 19:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: PaintBox über Komponenten legen

  Alt 7. Okt 2008, 20:15
Danke!

hab das ganze jetzt auf ein Panel gelegt
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz