AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente übermalt Schrift

Ein Thema von TheMiller · begonnen am 4. Apr 2007 · letzter Beitrag vom 4. Apr 2007
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Komponente übermalt Schrift

  Alt 4. Apr 2007, 00:32
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
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: Komponente übermalt Schrift

  Alt 4. Apr 2007, 01:59
Moin!

Ja, das wäre sehr elegant, IMHO machts anders keinen Sinn
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Komponente übermalt Schrift

  Alt 4. Apr 2007, 07:20
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).
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Komponente übermalt Schrift

  Alt 4. Apr 2007, 11:25
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".
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#5

Re: Komponente übermalt Schrift

  Alt 4. Apr 2007, 15:55
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
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: Komponente übermalt Schrift

  Alt 4. Apr 2007, 16:24
Ahhhu!

Ok, dann mach ich das so...! Vielen Dank!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 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