[Module] ListEx - Gadget(All OS)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
HeX0R
Beiträge: 2954
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)

Beitrag 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?
Benutzeravatar
HeX0R
Beiträge: 2954
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)

Beitrag 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 ;)
Benutzeravatar
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)

Beitrag 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.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
HeX0R
Beiträge: 2954
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)

Beitrag 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.
Benutzeravatar
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)

Beitrag von Thorsten1867 »

Update: Drag & Drop für editierbare Zellen (Text)
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
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)

Beitrag von Thorsten1867 »

Update:
  • Bugfix: Font
  • Drag & Drop: Einfügen eines Leerzeichens, wenn die Zelle bereits Text enthält
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
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)

Beitrag von Thorsten1867 »

Update:
  • Added: SetCellFlags() / RemoveCellFlag()
  • Flags: #LockCell / #Strings / #ComboBoxes / #Dates
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
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)

Beitrag von Thorsten1867 »

Update: Spaltenbreite mit der Maus ändern (#ResizeColumn)
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
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)

Beitrag von Thorsten1867 »

Update: Added: CSV support (file/clipboard)
Zuletzt geändert von Thorsten1867 am 11.11.2019 18:57, insgesamt 1-mal geändert.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
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)

Beitrag von Thorsten1867 »

Update: Added: CSV - Unterstützung(Datei/ClipBoard)
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Antworten