Listbox aktualisieren

Hallo liebe Community,

Trotz vieler Stunden an Recherche und “Trial and Error” komme ich bei einem, recht banal aussehendem Thema nicht weiter:

Ich möchte bei einer Listbox auf Basis einer aktuellen Auswahl einen Datensatz (rechte Maustaste-Kontextmenü-“Datensatz löschen”) löschen.
Der Datensatz wird mit “Delete Record” auch tatsächlich gelöscht. So weit so einfach.

Mir ist es aber bis jetzt noch nicht gelungen, den leeren Datensatz aus der Listbox rauszubekommen. Mit “REDRAW” werden zwar die Einträge gelöscht, aber es bleibt eine leere Zeile zurück.

Ich habe auch schon die Anregungen einiger Vorposts, die thematisch zusammenhängen getestet, z.B. Fokus auf ein anderes Objekt wechseln, oder Spaltengröße verändern,… aber leider… :frowning:

Meine Erklärung ist, dass “REDRAW” zwar gut funktioniert, wenn Datensätze geändert werden, aber nicht, wenn sich die Selection in ihre Größe ändert?

Besteht hier die einzige Möglichkeit darin, die Abfrage neu auszuführen? Das ist aber bei komplexen Abfragen auch nicht trivial.

Bin für jeden Denkanstoß dankbar :slight_smile: Vielleicht hab ich ja auch in der Dokumentation irgendetwas überlesen.

lg und Danke vorab

Alessandro

Product :4D - 4D Server
Version: V16R4
OS : Windows

DELETE RECORD löscht den Datensatz, ändert aber nicht die aktuelle Auswahl.
REDRAW kann daher gar keine Auswirkung haben, bzw nur die gleiche wie rauf/runterscrollen, die Listbox zeigt ja schließlich weiterhin die gleiche aktuelle Auswahl.

Sie müssten danach noch die Auswahl ändern, zb mit Sets/DIFFERENCE. Das könnte man manuell selbst programmieren.

Einfacher ist jedoch dafür eine Automatik zu verwenden.
Testen Sie einmal mit einem Button. Weisen Sie diesem die Aktion “deleteSubrecord” als automatische Aktion zu.
Hinweis: deleteSubrecord, nicht DeleteRecord!
Siehe dazu: http://doc.4d.com/4Dv16R5/4D/16-R5/Standardaktionen.300-3509065.de.html

deleteSubrecord verhält sich je nach Kontext unterschiedlich, in einer Listbox wird der markierte Datensatz gelöscht und aus der Auswahl entfernt.

Wenn das den gewünschten Effekt ergibt - Sie aber keinen Button verwenden wollen sondern z. B. Kontextmenü, dann die automatische Aktion über INVOKE ACTION selbst aufrufen oder dem Kontextmenü einfach direkt zuweisen!
Beispiel dazu: http://doc.4d.com/4Dv16R5/4D/16-R5/Dynamic-pop-up-menu.301-3481982.de.html

Gerade getestet, so funktioniert es.
Super, Danke!!!