[Module] ListEx - Gadget(All OS)
- HeX0R
- Beiträge: 2960
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
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?
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?
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
- HeX0R
- Beiträge: 2960
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
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
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
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
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.
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.
- HeX0R
- Beiträge: 2960
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
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.
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.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
Update: Drag & Drop für editierbare Zellen (Text)
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
Update:
- Bugfix: Font
- Drag & Drop: Einfügen eines Leerzeichens, wenn die Zelle bereits Text enthält
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
Update:
- Added: SetCellFlags() / RemoveCellFlag()
- Flags: #LockCell / #Strings / #ComboBoxes / #Dates
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] ListEx - Gadget(All OS)
Update: Spaltenbreite mit der Maus ändern (#ResizeColumn)
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] ListEx - Gadget(All OS)
Update: Added: CSV support (file/clipboard)
Zuletzt geändert von Thorsten1867 am 11.11.2019 18:57, insgesamt 1-mal geändert.
- Thorsten1867
- Beiträge: 1359
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: [Module] ListEx - Gadget(All OS)
Update: Added: CSV - Unterstützung(Datei/ClipBoard)