AGB  ·  Datenschutz  ·  Impressum  







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

onDrawItem nochmals ausführen?!

Ein Thema von alexo · begonnen am 19. Dez 2005 · letzter Beitrag vom 19. Dez 2005
Antwort Antwort
alexo

Registriert seit: 30. Nov 2005
36 Beiträge
 
#1

onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 07:38
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.

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
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 07:44
Probiers mal mit ListView.Repaint oder ListView.Refresh.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
alexo

Registriert seit: 30. Nov 2005
36 Beiträge
 
#3

Re: onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 07:50
funktioniert erstmal...danke!!

meld mich wenn ich noch was brauche !!
  Mit Zitat antworten Zitat
alexo

Registriert seit: 30. Nov 2005
36 Beiträge
 
#4

Re: onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 08:40
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?!?


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


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
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 08:42
Mach vor dem erstellen des Eintrages ListView.Items.BeginUpdate und wenn du alle Einstellungen gesetzt hast ListView.Items.EndUpdate. Dies verhindert das Neuzeichnen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
alexo

Registriert seit: 30. Nov 2005
36 Beiträge
 
#6

Re: onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 08:54
Funktioniert leider nicht....

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..)
  Mit Zitat antworten Zitat
alexo

Registriert seit: 30. Nov 2005
36 Beiträge
 
#7

Re: onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 09:51
hab jetzt einfach eine Standard farbe übergeben...somit sind auch die Neuen Einträge abgehoben...

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-

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)?!?!


...
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: onDrawItem nochmals ausführen?!

  Alt 19. Dez 2005, 11:26
Zitat von alexo:
hab es mit refresh u. repaint versucht -will aber nicht funktionieren-

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)?!?!


...
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  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 04:58 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