Hallo,
Wenn ich beim TValueListEditor einen neuen Eintrag hinzu fügen möchte (neue Zeile) so geht das wenn ich auf der Tastatur die Pfeil nach unten Taste drücke.
Dann kann ich einen neuen Eintrag anlegen.
Doch wenn ich dann die Taste "nach oben" wieder drücke, dann verschwindet der Eintrag wieder, drücke ich die Taste nach unten, dann kommt er wieder.
Ein zweites drücken der Taste nach unten erzeugt keine weitere Zeile.
Erst wenn dem neuen Eintrag ein Wert eingegeben wurde, in dem Video "0", dann kann man eine weitere Zeile hinzufügen. Diese wird auch erst dann irgendwie "fixiert", nachdem ein Wert eingegeben wurde.
Kann man das so ändern, dass es "richtig" geht ohne dass man extra einen Wert eingeben muss?
Der Hintergrund:
In diesem Dialog sollen Parameter-Vorlagen erzeugt werden, ohne Werte, bzw. Werte nur Optional vorbelegt werden. Daher wäre es gut wenn man die Zeilen nacheinander anlegen könnte, ohne dass man extra einen Wert noch eingibt.
Im Anhang ein kleines Video vom Bildschirm.
VG Markus
TValueListEditor - Verhalten
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
TValueListEditor - Verhalten
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: TValueListEditor - Verhalten
Wenn von Anfang an feststeht, wieviele Zeilen n benötigt werden, würde ich sie wie beim StringGrid mit ValueListEditor1.RowCount := n per Code anlegen.
Das automatische Erweitern um eine neue Leerzeile am Ende kann man verhindern, wenn man die Option keyAdd aus den KeyOptions entfernt. (Warum die normale Option geAutoAddRow wirkungslos ist, weiß ich nicht.
Das automatische Erweitern um eine neue Leerzeile am Ende kann man verhindern, wenn man die Option keyAdd aus den KeyOptions entfernt. (Warum die normale Option geAutoAddRow wirkungslos ist, weiß ich nicht.
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TValueListEditor - Verhalten
Das will ich ja gerade, neue Zeilen hinzu fügen.
Den Value-Name habe ich als Drop-Down Box gestaltet so dass man hier sehr gut von bestehenden "Namen" wählen kann. Man kann auch neue Namen deklarieren.
Wie viele Eigenschaften (Namen) der Benutzer dynamisch haben will weiß nur der Benutzer selbst und entsprechend viele Zeilen sollen dann hinzufügbar sein.
TValueListEditor.Clear löscht zwar alle Elemente, jedoch der letzte nicht vollständig neu hinzugefügt (der im Video verschwindet und wieder kommt) wird damit nicht zurückgesetzt.
Ich finde den TValueListEditor ansonsten genau richtig für meinen Zweck, bis auf das, dass der noch etwas "Zickig" in der Anwendung ist.
Schlussendlich speichere ich diese ValueList als JSON in der Datenbank, da JSON Felder man in SQL einzeln wie Spalten nutzen kann, die man somit "dynamisch" erzeugen kann. Das ist für Technische Eigenschaften von irgendwas eine geniale Sache.
VG Markus
Den Value-Name habe ich als Drop-Down Box gestaltet so dass man hier sehr gut von bestehenden "Namen" wählen kann. Man kann auch neue Namen deklarieren.
Wie viele Eigenschaften (Namen) der Benutzer dynamisch haben will weiß nur der Benutzer selbst und entsprechend viele Zeilen sollen dann hinzufügbar sein.
TValueListEditor.Clear löscht zwar alle Elemente, jedoch der letzte nicht vollständig neu hinzugefügt (der im Video verschwindet und wieder kommt) wird damit nicht zurückgesetzt.
Ich finde den TValueListEditor ansonsten genau richtig für meinen Zweck, bis auf das, dass der noch etwas "Zickig" in der Anwendung ist.
Schlussendlich speichere ich diese ValueList als JSON in der Datenbank, da JSON Felder man in SQL einzeln wie Spalten nutzen kann, die man somit "dynamisch" erzeugen kann. Das ist für Technische Eigenschaften von irgendwas eine geniale Sache.
VG Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TValueListEditor - Verhalten
Vielleicht nochmal zur Verdeutlichung wie ich den ValueListEditor verwende:
Dieses Bauteil hat eine ganze Liste mit Technischen Daten:
https://www.mouser.de/ProductDetail/Pan ... qCKMjo8%3D
Dieses Bauteil hat auch eine ganz andere Liste mit Technischen Daten:
https://www.mouser.de/ProductDetail/Inf ... dzRg%3D%3D
Auch ist die Anzahl jedes mal anders.
Nun kann man her gehen und die einzelnen technischen Daten in den ValueListEditor rein schreiben, so wie jeder mag. Damit man bereits bestehende Bezeichner (Namen) nicht "falsch" tippt habe ich das als TComboBox zur Auswahl bereit gestellt.
Nun speichere ich alle technische Daten als JSON Format in der Datenbank ab. Es wäre zwar einfacher das als String-Liste ab zu speichern, jedoch kann damit SQL nicht wirklich umgehen.
Für JSON hingegen gibt es nette SQL Erweiterungen wo man jedes Feld z.B. "Nennspannung" in den technischen Daten als einzelnes Datenbankfeld darstelle kann und sogar kann man da drin nach bestimmten Werten suchen. Somit ist es möglich eine SQL Abfrage aus zu führen: "Zeige mir die Datensätze mit Nennspannung >= 100 und Nennspannung < 200". Alle Datensätze, die das "Nennspannung" im JSON nicht drin haben werden automatisch nicht gezeigt.
Doku von MySQL:
https://dev.mysql.com/doc/refman/8.0/en/json.html
MariaDB, SQLite, PostgreSQL und die meisten andere unterstützen das ebenfalls.
VG Markus
Dieses Bauteil hat eine ganze Liste mit Technischen Daten:
https://www.mouser.de/ProductDetail/Pan ... qCKMjo8%3D
Dieses Bauteil hat auch eine ganz andere Liste mit Technischen Daten:
https://www.mouser.de/ProductDetail/Inf ... dzRg%3D%3D
Auch ist die Anzahl jedes mal anders.
Nun kann man her gehen und die einzelnen technischen Daten in den ValueListEditor rein schreiben, so wie jeder mag. Damit man bereits bestehende Bezeichner (Namen) nicht "falsch" tippt habe ich das als TComboBox zur Auswahl bereit gestellt.
Nun speichere ich alle technische Daten als JSON Format in der Datenbank ab. Es wäre zwar einfacher das als String-Liste ab zu speichern, jedoch kann damit SQL nicht wirklich umgehen.
Für JSON hingegen gibt es nette SQL Erweiterungen wo man jedes Feld z.B. "Nennspannung" in den technischen Daten als einzelnes Datenbankfeld darstelle kann und sogar kann man da drin nach bestimmten Werten suchen. Somit ist es möglich eine SQL Abfrage aus zu führen: "Zeige mir die Datensätze mit Nennspannung >= 100 und Nennspannung < 200". Alle Datensätze, die das "Nennspannung" im JSON nicht drin haben werden automatisch nicht gezeigt.
Doku von MySQL:
https://dev.mysql.com/doc/refman/8.0/en/json.html
MariaDB, SQLite, PostgreSQL und die meisten andere unterstützen das ebenfalls.
VG Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de