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 onDrawItem nochmals ausführen?! (https://www.delphipraxis.net/59186-ondrawitem-nochmals-ausfuehren.html)

alexo 19. Dez 2005 07:38


onDrawItem nochmals ausführen?!
 
Hi!

Folgendes Szenario:

Ich hab ein TListView in dem meine daten ausgegeben werden...

mit Ondraw item färbe ich nun meine einträge nach kategorien(gehalt=grün, usw...)

das funktioniert alles recht gut, nur jetzt meine frage:


1. wenn sich die kategorie farbe ändert müssten die einträge neu gezeichnet werden
2. kann der benutzer im nachhinein auswählen ob der text, der hintergrund oder gar nichts eingefärbt wird. :gruebel:

wie kann ich die ondraw item prozedur nochmals ausführen bzw. hab ich schon was von onadvancedIRGENDWAS gehört...hab aber keine ahnung wie ich das einsetze :? !!


danke

jim_raynor 19. Dez 2005 07:44

Re: onDrawItem nochmals ausführen?!
 
Probiers mal mit ListView.Repaint oder ListView.Refresh.

alexo 19. Dez 2005 07:50

Re: onDrawItem nochmals ausführen?!
 
funktioniert erstmal...danke!!

meld mich wenn ich noch was brauche ;-)!! :wink:

alexo 19. Dez 2005 08:40

Re: onDrawItem nochmals ausführen?!
 
hab noch ein problem:

wenn ich einen neuen listView eintrag hinzufüge ruft er logischerweise automatisch den ondrawitem event auf...die farbe die er verwenden soll bekommt er aber über item.data die zu diesem zeitpunkt aber nicht existiert, wie kann ich das anders lösen?!? :gruebel:


zur info: im hintergrund läuft eine access datenbank in der die ganzen infos gespeichert sind(farbe,kategorie usw....) :zwinker:


hab mir schon gedacht das ich die farbe aus der datenbank hole weiß aber nicht wie ich den richtigen eintrag rausfiltere ohne dass ich bei mehreren einträgen eine Endlosschleife bekomme...steh gerade ein bisschen auf der leiter, sorry :wall:

jim_raynor 19. Dez 2005 08:42

Re: onDrawItem nochmals ausführen?!
 
Mach vor dem erstellen des Eintrages ListView.Items.BeginUpdate und wenn du alle Einstellungen gesetzt hast ListView.Items.EndUpdate. Dies verhindert das Neuzeichnen.

alexo 19. Dez 2005 08:54

Re: onDrawItem nochmals ausführen?!
 
Funktioniert leider nicht.... :wall:

der eintrag funktioniert so

mittels editfeld wird zB der Betrag eingegeben==> dann in der datenbank gespeichert u. von der datenbank ins LV geladen (in dieser Funktion hab ich das beginUpdate u. EndUpdate eingefügt..) :gruebel:

alexo 19. Dez 2005 09:51

Re: onDrawItem nochmals ausführen?!
 
hab jetzt einfach eine Standard farbe übergeben...somit sind auch die Neuen Einträge abgehoben... :mrgreen:

möchte jetzt einen aktualisieren button hinzufügen damit der benutzer dann selbst entscheiden kann ob er die neuen einträge dann sofort in der richtigen farbe darstellen lassen will oder nicht...

hab es mit refresh u. repaint versucht -will aber nicht funktionieren- :wall:

wenn ich aber die kategorie verändere, wird die LV neu geladen und die einträge richitg gefärbt...wie kann ich das manuell steuern(onDrawItem selber aufrufen)?!?! :gruebel:


...

jim_raynor 19. Dez 2005 11:26

Re: onDrawItem nochmals ausführen?!
 
Zitat:

Zitat von alexo
hab es mit refresh u. repaint versucht -will aber nicht funktionieren- :wall:

wenn ich aber die kategorie verändere, wird die LV neu geladen und die einträge richitg gefärbt...wie kann ich das manuell steuern(onDrawItem selber aufrufen)?!?! :gruebel:


...

Refresh/Repaint zeichnet nur das ListView neu. Es wird also auch OnDrawItem für jeden Sichtbaren Eintrag aufgerufen. Die Daten (in dem Fall die Farbe) muss natürlich vorher neu zugewiesen werden.


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