![]() |
Dynamische Paintbox wird nicht angezeigt...
Hi
Ich habe mir einen Typ von TPaintBox abgeleitet und erstelle dynamisch eine Instanz dieses Typs (MyPaintBox). Zur Vereinfachung soll diese MyPaintBox in einem Panel mit alClient angezeigt werden, damit ich direkt im OI regeln kann, wo es angezeigt werden soll... das versuche ich so:
Delphi-Quellcode:
aber ich kann dann malen was ich will....es passiert nichts.
constructor TMyPaintBox.Create(AOwner: TComponent);
begin inherited Create(AOwner); Parent:=TWinControl(AOwner); end; procedure TForm1.FormCreate(Sender: TObject); var i:Integer; begin PB:=TMyPaintBox.Create(Panel1); PB.Align:=alClient; PB.Show; end; Woran liegts? Edit: Rechtschreibung :roll: und Randomize hat hier nichts zu suchen.... |
Re: Dynamische Paintbox wird nicht angezeigt...
Hi Gereon,
vielleicht solltest du als erstes folgende Änderung machen:
Delphi-Quellcode:
Danach solltest du die Behandlungsroutine für das Ereignis OnPaint deiner Komponente untersuchen. Ich wüsste sonst nicht, warum die Darstellung unterbleiben sollte.
constructor TMyPaintBox.Create(AOwner, AParent: TComponent);
begin inherited Create(AOwner); Parent := AParent; end; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin PB := TMyPaintBox.Create(self, Panel1); PB.Align := alClient; end; Grüße vom marabu |
Re: Dynamische Paintbox wird nicht angezeigt...
Hast du auch den Parent zugewiesen?
|
Re: Dynamische Paintbox wird nicht angezeigt...
hab das ganze jetzt so geändert (auch den Aufruf):
Delphi-Quellcode:
es kommt aber immer noch nichts...
constructor THangManPB.Create(AParent, AOwner: TComponent);
begin inherited Create(AOwner); Parent:=TWinControl(AParent); end; Zitat:
hast du mal ein beispiel? (ich mach das zum ersten mal :( ) |
Re: Dynamische Paintbox wird nicht angezeigt...
Eine PaintBox wird nur zur Entwurfszeit, im Designer von Delphi, durch ein gestricheltes Rechteck dargestellt. An und für sich ist sie unsichtbar. Logisch, denn eine PaintBox dient ja quasi nur als Leinwand, auf die man mittels ihres OnPaint-Ereignisses selbst etwas zeichnen muss.
Dem OnPaint-Ereignis einen Handler zuweisen geht z.B. so:
Delphi-Quellcode:
Ich hoffe das hilft ein bisschen. Vielleicht solltest du erst mal mit statischen, mittels des Delphi Formdesigners platzierten PaintBoxes üben, bevor du dich an dynamische wagst.
// Methode aus deinem ersten Beitrag, etwas erweitert
procedure TForm1.FormCreate(Sender: TObject); var i:Integer; begin PB:=TMyPaintBox.Create(Panel1); PB.Align:=alClient; PB.OnPaint := MyPaintBoxPaint; end; // Methode von Form1, die der PaintBox als OnPaint-Handler zugewiesen wird // Dieses Beispiel füllt die Fläche der PaintBox einfach nur mit blauer Farbe procedure TForm1.MyPaintBoxPaint(Sender: TObject); begin with Sender as TPaintBox do begin Canvas.Brush.Color := clBlue; Canvas.FillRect(ClientRect); end; end; |
Re: Dynamische Paintbox wird nicht angezeigt...
ja, ich kenne das Prinzip bereits...
also es war alles richtig, nur musste ich im OnPaint alles neu gemalt werden, und das hatte ich irgendwie noch nicht... Vielen Dank!!! (Ihr werdet das fertige Programm wahrscheinlich noch zu sehen bekommen :) ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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