![]() |
Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?
'n Abend!
Ich lese gerade in einer Klasse (TCustomControl Nachfahre) in der Paint (override) Methode ganz am Anfang folgende drei Zeilen -- und versteh nicht wozu sie gut sind:
Delphi-Quellcode:
Wozu ist dieses Assign notwenig?
Canvas.Pen.Assign(Pen);
Canvas.Brush.Assign(Brush); Canvas.Font.Assign(Font); (Wenn ich es auskommentiere merke ich keinen Unterschied) Jemand eine Idee? Danke & Gruß Jazzman |
AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?
Assign() Kopiert, vereinfacht gesagt, die gesamten Werte von deiner Angabe in die Variable mit der du Assign aufrufst.
Wenn du die Zeilen Auskommentierst könnte es zu Problemen kommen wenn du die Werte wo anders mal änderst. Soweit als Kurzfassung. Gruß Teekeks |
AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?
Vereinfacht gesagt sagst Du Deiner Zeichenfläche, dass sie die Werte (Stift, Pinsel und Schriftart) der Komponente selbst zur Darstellung verwenden soll. Du kannst die Zeilen ja spaßeshalber einmal auskommentieren, einen dieser Werte ändern und schauen, was passiert.
|
AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?
Zitat:
Bin nicht ganz sicher ob ich es verstanden habe -- aber nachedem ich die Zeilen auskommentiert habe und anschließend:
Delphi-Quellcode:
eine neue Farbe setze, funktioniert alles prima -- ohne Probleme. Merkwürdig, nicht wahr?! Das war ja bereits mein erster Test, bevor ich den Thread startete -- einfach auskommentieren und schaun was passiert. Kann keinen Unterschied erkennen.
// Canvas.Pen.Assign(Pen);
// Canvas.Brush.Assign(Brush); // Canvas.Font.Assign(Font); Canvas.Brush.Color := ClRed; Merkwürdig Jazzamn |
AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?
Angenommen, Deine Komponente hat eine Color-Property. Wie willst Du nun erreichen, dass auch mit dieser Farbe gezeichnet wird?
|
AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?
Zitat:
Delphi-Quellcode:
Oder verstehe ich Dich falsch?
TMyPaper = CLASS(TCustomControl)
PROPERTY PaperColor : TColor READ FPaperColor WRITE SetPaperColor; ... PROCEDURE TMyPaper.SetPaperColor(Value: TColor); BEGIN IF FPaperColor <> Value THEN BEGIN FPaperColor := Value; INVALIDATE; END; END; PROCEDURE TGraphPaper.Paint; BEGIN INHERITED; // Canvas.Pen.Assign(Pen); --> Mit oder ohne, spielt keine Rolle (glaube ich!) // Canvas.Brush.Assign(Brush); " " // Canvas.Font.Assign(Font); " " Canvas.Brush.Color := FPaperColor; Canvas.Rectangle(0, 0, Width, Height); ... Gruß Jazzman |
AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?
Solange das einfache Datentypen sind, kannst Du sie natürlich auch zuweisen. Wenn es aber Klassen sind (genauer: von TPersistent abgeleitet), dann solltest Du vorsichtshalber Assign verwenden (Font wäre z.B. so ein Kandidat).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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