Paintbox zur Laufzeit erstellen: OnPaint Ereignis
Hi,
ich habe eine Klasse von TPaintbox abgeleitet und möchte diese nun auf meiner Form nutzen. Dazu erstelle ich eine Instanz dieser Klasse (TUhr) und weise ihr als Owner und Parent mein Form1 zu. Beim Erstellen wird das "Bild" auch auf die Paintbox gezeichnet. Nur wenn ich dann ein anderes Fenster über die Paintbox schiebe wird sie nachher nicht neu gezeichnet. Muss ich etwa beim OnPaint Ereignis der Form extra das OnPaint Ereignis der Paint box aufrufen? Hab die Paintbox bisher nur als Komponente zu Designzeit benutzt und da wird automatisch das OnPaint Ereignis aufgerufen, wenn der Teil der Form in dem die Paintbox liegt neugezeichnet werden muss.
Delphi-Quellcode:
//Unit Uhr
interface uses ExtCtrls,Classes; type TUhr = class(TPaintbox) procedure paint(Sender:TObject); constructor create(AOwner: TComponent); override; end; implementation constructor TUhr.create; begin inherited create(AOwner); OnPaint:=paint; left:=0; top:=0; width:=100; height:=100; end; procedure TUhr.paint; begin Canvas.LineTo(width,height); end; //Unit 1 myUhr:TUhr; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin myUhr:=TUhr.create(self); myUhr.Parent:=Self; end; |
Re: Paintbox zur Laufzeit erstellen: OnPaint Ereignis
Probier mal das:
Delphi-Quellcode:
Um die Linie mehr als einmal zu zeichnen ;)
procedure TUhr.paint;
begin Canvas.MoveTo(0, 0); Canvas.LineTo(width,height); end; |
Re: Paintbox zur Laufzeit erstellen: OnPaint Ereignis
:wall:
danke :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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