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 Problem: Canvas zeichnet nicht! (https://www.delphipraxis.net/68360-problem-canvas-zeichnet-nicht.html)

Martin K 28. Apr 2006 17:39


Problem: Canvas zeichnet nicht!
 
Hi,
ich habe folgendes Problem:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Font.Color := clRed;
  Label1.Canvas.Pen.Color := clGreen;
  Label1.Canvas.MoveTo(0, 0);
  Label1.Canvas.LineTo(20, 10);
end;
Wenn ich auf den Button klicke, wird nur die Schriftfarbe rot.
Erst beim zweiten Klick auf den Button wird die grüne Linie gezeichnet.

Woran liegt das?
Wie kann ich das ändern?????

mkinzler 28. Apr 2006 17:40

Re: Problem: Canvas zeichnet nicht!
 
Delphi-Quellcode:
Label1.Update;
?

Martin K 28. Apr 2006 17:42

Re: Problem: Canvas zeichnet nicht!
 
Ja, super!!!

:thumb: Danke, das hat geklappt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Font.Color := clRed;
  Label1.Update; //  <--- hier eingefügt
  Label1.Canvas.Pen.Color := clGreen;
  Label1.Canvas.MoveTo(0, 0);
  Label1.Canvas.LineTo(20, 10);
end;
Verstanden habe ich es aber trotzdem nicht...

R2D2 28. Apr 2006 17:47

Re: Problem: Canvas zeichnet nicht!
 
Das Label1.update bewirkt, dass Delphi das Label aktualisiert.

Desshalb wird der neue Canvas dann aufs Label geschrieben.

Hawkeye219 28. Apr 2006 17:49

Re: Problem: Canvas zeichnet nicht!
 
Zitat:

Zitat von Martin K
Ja, super!!!

...und beim nächsten Aktualisieren des Labels ist deine schöne Zeichnung wieder weg, weil dann die Paint-Routine des Labels wieder aufgerufen wird :wink:

Sorry, aber ein Label ist nicht für das Zeichnen von außen geeignet. Dazu gibt es TImage (direktes Zeichnen möglich) oder TPaintBox (Zeichnen innerhalb der OnPaint-Behandlung). Eine weitere Alternative wäre das Ableiten einer eigenen Komponente von TGraphicControl oder TCustomControl.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 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