Seite 6 von 8

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Verfasst: 22.09.2019 20:37
von HeX0R
Die Performance ist leider ziemlich schlecht!
Ich habe einen Timer, der alle 100ms einzelne Zellen neu setzt.
Dabei kann es durchaus (eigentlich eher die Regel) vorkommen, dass der Inhalt derselbe ist wie vorher.
Windows scheint hier cleverer zu sein, und scheint solche Anfragen zu ignorieren.
ListEx aber bremst das Programm dermassen aus, dass der Timer verspätet erst aufgerufen wird, ich denke mal, da wird jedes mal das ganze Gadget neu aufgebaut.

Kannst Du da performancetechnisch noch was rauskitzeln?

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Verfasst: 24.09.2019 22:25
von HeX0R
Ich habe mich versucht da hineinzuarbeiten, muss aber leider aufgeben, das wird zu zeitintensiv, das ist teilweise ziemlich verschachtelt.
Mein Problem habe ich erstmal so gelöst, dass ich erst die Zelle auslese, mit dem zu setzenden Text vergleiche, und nur bei einer Änderung die Zelle neu beschreibe.

Aber grundsätzlich denke ich, das folgende sollte (irgendwie) möglich sein?

- Du könntest jeder Zelle ein Changed Flag mitgeben, das gesetzt wird, wenn irgendein State oder Text verändert wird.
- FitColumns_() so bearbeiten, dass es erst schaut, ob sich die Breite verändert hat, bevor es die einfach stur setzt. Dann könnte man auch ein "WidthChanged" o.ä. setzen
- Beim Draw_() könnte man dann, wenn z.B. WidthChanged gesetzt ist, alles neu zeichnen, wenn nicht, nur die veränderten Zellen überschreiben.

Wird wahrscheinlich nicht ganz so simpel, wie hier dargestellt, soll auch nur ein Denkanstoss sein ;)

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Verfasst: 25.09.2019 08:23
von Thorsten1867
Bei meinem Beispiel liegt die Zeit für das Neuzeichnen bei 2-8ms.

Aber mit dem Ansatz nur bei geändertem Text das Gadget neu zu zeichnen, lässt sich etwas anfangen.
Ich habe SetCellText() und SetItemText() entsprechend abgeändert.

Ich hoffe, es funktioniert für dich.

PS:
FitColumns_() wird nur ausgeführt, wenn das entsprechende Flag gesetzt ist und es werden nur Berechnungen zur Spaltenbreite vorgenommen und keine Zeichenoperationen ausgeführt. Ob die neu Spaltenbreite gesetzt wird oder nicht macht keinen Unterschied, da diese erst mit dem nächsten Draw_() - Befehl ausgewertet wird und dem ist es im Grunde egal, ob sich die Breite geändert hat oder nicht.

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Verfasst: 25.09.2019 13:02
von HeX0R
Ich probier das die Tage mal, Danke!

Wegen dem FitColumn_():
Das Problem ist, dass ich das Flag #FitColumn brauche, weil es scheinbar bei Deinem ListEx keine Möglichkeit gibt, die Spaltenbreite nachträglich per Maus zu verändern (oder ich bin nur zu doof).
Wenn aber die Funktion so clever wäre, zu bemerken, dass sich gar nichts verändert hat, wäre ein Neuzeichnen unnötig.

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Verfasst: 16.10.2019 16:56
von Thorsten1867
Update: Drag & Drop für editierbare Zellen (Text)

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Verfasst: 17.10.2019 08:06
von Thorsten1867
Update:
  • Bugfix: Font
  • Drag & Drop: Einfügen eines Leerzeichens, wenn die Zelle bereits Text enthält

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Verfasst: 26.10.2019 18:57
von Thorsten1867
Update:
  • Added: SetCellFlags() / RemoveCellFlag()
  • Flags: #LockCell / #Strings / #ComboBoxes / #Dates

Re: [Module] ListEx - Gadget(All OS)

Verfasst: 02.11.2019 12:56
von Thorsten1867
Update: Spaltenbreite mit der Maus ändern (#ResizeColumn)

Re: [Module] ListEx - Gadget(All OS)

Verfasst: 11.11.2019 18:56
von Thorsten1867
Update: Added: CSV support (file/clipboard)

Re: [Module] ListEx - Gadget(All OS)

Verfasst: 11.11.2019 18:57
von Thorsten1867
Update: Added: CSV - Unterstützung(Datei/ClipBoard)