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 Komponente übermalt Schrift (https://www.delphipraxis.net/89679-komponente-uebermalt-schrift.html)

TheMiller 4. Apr 2007 00:32


Komponente übermalt Schrift
 
Hallo,

hab jetzt eine Komponente soweit durchdesigned und wollte jetzt eine Schrift drauflegen. Die Schrift kann der User mit AddItem selbst bestimmen. Doch logischerweise wird die geschriebene Schrift bei der nächsten Message zum Neuzeichnen von Windows wieder übermalt. Jetzt wollte ich wissen, ob es elegant ist, diese Items in einer StringList zu speichern und diese dann bei jedem Paint auslesen und die Items wieder neu zu schreiben? Ich wüsste nicht, wie man das sonst lösen kann - schließlich müssen die Items ja irgendwie gespeichert werden, damit sie beim nächten Neuzeichnen wieder mit ausgegeben werden können.

Danke im Voraus

Sunlight7 4. Apr 2007 01:59

Re: Komponente übermalt Schrift
 
Moin!

Ja, das wäre sehr elegant, IMHO machts anders keinen Sinn ;)

Flocke 4. Apr 2007 07:20

Re: Komponente übermalt Schrift
 
Um die Ausführung meines Vorredners zu ergänzen: anders ist es unter Windows auch nicht gedacht.

Windows ist ein ereignisgesteuertes System. Der Standardweg ist, nur dann in deinem Control herumzumalen, wenn du via WM_PAINT dazu aufgefordert wirst (bzw. unter der VCL die entsprechende Routine Paint aufgerufen wird).

Wenn der Inhalt deines Controls sich ändert, solltest du dies einfach zur Kenntnis nehmen und dem System per Invalidate mitteilen, dass der Inhalt neu gezeichnet werden musst.

Genau so verfährt Windows wenn z.B. ein anderes Fenster über deinem liegt und dann weggezogen wird - es markiert den entsprechenden Bereich auf dem Bildschirm als ungültig (invalid) und sendet ein WM_PAINT an alle Fenster von unten nach oben, die in diesem Bereich liegen (vereinfacht ausgedrückt).

TheMiller 4. Apr 2007 11:25

Re: Komponente übermalt Schrift
 
Gut, das ist klar. Also ist das mit den StringListen zum Speichern der Items dann auch ok. Ich meine, irgendwoher muss die Komponente ja auch die Einträge hernehmen, die beim Neuzeichnen wieder eingefügt werden müssen.
Es ging mir bei der Frage also eher um die StringListe als "Zwischenspeicher".

Sunlight7 4. Apr 2007 15:55

Re: Komponente übermalt Schrift
 
Du kannst gleich eine StringList einbauen, die Du als Property einbaust und somit dem Programmierer zur Verfügung stellst. So wie zB TListBox.Items.

Das wäre dann so richtig elegant ;)

TheMiller 4. Apr 2007 16:24

Re: Komponente übermalt Schrift
 
Ahhhu!

Ok, dann mach ich das so...! Vielen Dank!


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