Listbox in Tabellenkontrollfeld - Inhalt nur nach Tastendruck sichtbar

Hallo *,

wieder einmal ein ganz spezielles Problem bei der Überarbeitung einer
Datenbank.
In Datenbanken gibt es für Formulare Tabellenkontrollfelder, die neben
verschiedenen anderen Feldern auch Listboxen enthalten können. Jetzt
soll mit solch einem Tabellenkontrollfeld z.B: eine Schlüsselausgabe
bewältigt werden. Nicht mehr auswählbare Schlüssel sollen auch nicht
mehr zur Auswahl stehen.
Dachte ich mir: Ein Makro reicht. Alle ausleihbaren Schlüssel zuzüglich
des Schlüssels, der gerade im aktuellen Datensatz eventuell ausgesucht
wird, werden über einen SQL-Befehl bereit gestellt.
Jetzt das Problem:
Das Tabellenkontrollfeld zeigt den Inhalt nur in der ersten sichtbaren
Zeile an. Setze ich dort den Cursor hin und bewege mich in der
Listenfeldspalte mit der Pfeiltaste nach unten, so erscheinen
nacheinander alle Inhalte der Listenfelder. Bewege ich mit der über den
Scrollbalken alles wieder nach oben, so fehlen oben die Einträge.
Jetzt suche ich nach der Möglichkeit, dieses Ansichtsproblem geklärt zu
bekommen. Die Listboxen erhalten die richtigen Werte aber zeigen sie
eben nur an, wenn sie mit der Pfeiltaste angesteuert werden oder mit der
Maus geöffnet werden.

Gruß

Robert

Hi Robert,Verstehe ich dich richtig, dass in der markierten Listbox Einträge nicht angezeigt werden, wenn du mit der Maus durchscrolst, aber schon, wenn du mit den Pfeiltasten navigierst oder sie ausklappst? Du scrollst dann quasi durch blanke Felder, aber es wird trotzdem der richtige Wert in die Tabelle zurück geschrieben?Dann klingt das mehr nach nem Bug. Hast du Datenbank bei dir auf der HP, dann kann ich morgen mal gucken, ob mir was einfällt.Viele Grüße Stefan--=Diese Nachricht wurde von meinem Android Mobiltelefon mitWEB.DEMail gesendet.
Am 11.04.21, 21:23 schriebRobert Großkopfrobert@familiegrosskopf.de:Hallo *, wieder einmal ein ganz spezielles Problem bei der Überarbeitung einerDatenbank.In Datenbanken gibt es für Formulare Tabellenkontrollfelder, die nebenverschiedenen anderen Feldern auch Listboxen enthalten können. Jetztsoll mit solch einem Tabellenkontrollfeld z.B: eine Schlüsselausgabebewältigt werden. Nicht mehr auswählbare Schlüssel sollen auch nichtmehr zur Auswahl stehen.Dachte ich mir: Ein Makro reicht. Alle ausleihbaren Schlüssel zuzüglichdes Schlüssels, der gerade im aktuellen Datensatz eventuell ausgesuchtwird, werden über einen SQL-Befehl bereit gestellt.Jetzt das Problem:Das Tabellenkontrollfeld zeigt den Inhalt nur in der ersten sichtbarenZeile an. Setze ich dort den Cursor hin und bewege mich in derListenfeldspalte mit der Pfeiltaste nach unten, so erscheinennacheinander alle Inhalte der Listenfelder. Bewege ich mit der über denScrollbalken alles wieder nach oben, so fehlen oben die Einträge.Jetzt suche ich nach der Möglichkeit, dieses Ansichtsproblem geklärt zubekommen. Die Listboxen erhalten die richtigen Werte aber zeigen sieeben nur an, wenn sie mit der Pfeiltaste angesteuert werden oder mit derMaus geöffnet werden. Gruß Robert-- Homepage:https://www.familiegrosskopf.de/robert -- Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.orgProbleme?https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/Tipps zu Listenmails:https://wiki.documentfoundation.org/Netiquette/de=Listenarchiv:https://listarchives.libreoffice.org/de/users/Datenschutzerklärung:https://www.documentfoundation.org/privacy

Hallo Robert,

bisher kann ich das nicht nachvollziehen. Da du nicht schreibst, in welcher Version das auftritt, habe ich das mit 6.4 und 7.1 überprüft. Dabei stelle ich fest, dass in 7.1.1 die Angabe, wie viele Zeilen sichtbar sein sollen, ignoriert wird, was in 6.4 noch funktioniert. Dem werde ich noch nachgehen und ggf. einen Bug-Report schreiben.
Bei deiner Beschreibung bin ich nicht ganz sicher, was du überhaupt eingerichtet hast. Wenn du schreibst, dass nacheinander alle Inhalte erscheinen, verstehe ich das so, dass du dort "1" für die Anzahl der sichtbaren Zeilen eingestellt hast? Genau das kann ich aber wegen der genannten Ignorierung nicht testen, das habe ich bei keiner meiner Anwendungen drin. Und bevor ich da mehr Arbeit reinstecke, wüsste ich gern Genaueres. Und was heißt "mit der Maus geöffnet"?
Hast du das mal mit einem temporären fixen SQL-Befehl getestet, damit ein Einfluss des Makros (an den ich ohnehin nicht glaube) definitiv ausgeschlossen werden kann?
Ansonsten wäre es, wie Stefan schon sagte, wichtig, die Anwendung selbst anschauen zu können (in der Hoffnung, dass die Daten, wie häufig bei dir, in der internen HSQLDB liegen). Ich werde da dann aber erst einmal Stefan den Vortritt lassen, solange keine neuen Fakten auftauchen, um Doppelarbeit und Durcheinander zu vermeiden.

Gruß
Gerhard

Hallo Stefan,

ich habe das jetzt einmal hier eingebaut:
https://www.familiegrosskopf.de/robert/download/LO_Verein.odb

Die Datei ist etwas größer und nicht nur für den "Bug" gebaut.
Öffne das Formular "Mitglied" und scrolle ganz nach unten. Dort steht
ein Tabellenkontrollfeld für Bootständer. Bei mir wird in diesem Fall
der Bootständer für das erste Boot angezeigt. Bei den beiden folgenden
ist kein Boot verzeichnet. Gehe ich auf die Listbox in der nächsten
Zeile, so wird dort der korrekte Inhalt angezeigt. In der Box fehlt dann
der Wert aus der ersten und der dritten Zeile, weil die ja beide nicht
zur Verfügung stehen. Die Anzeige in der ersten Zeile verschwindet.

Das mit der Ansicht aller Inhalte über die Pfeiltasten konnte ich so
nicht nachstellen. Vermutlich braucht es dazu ein komplett gefülltes
Tabellenkontrollfeld. In der anderen Datei, mit der das passierte, waren
eben 10 Boote vergeben, so dass nach unten gescrollt werden musste.

Gruß

Robert

Hallo Gerhard,

bisher kann ich das nicht nachvollziehen. Da du nicht schreibst, in
welcher Version das auftritt, habe ich das mit 6.4 und 7.1 überprüft.

Das taucht in LO 6.4 genauso auf wie in den 7er-Versionen. Alles unter
OpenSUSE mit KDE.

Wenn du schreibst, dass nacheinander alle Inhalte
erscheinen, verstehe ich das so, dass du dort "1" für die Anzahl der
sichtbaren Zeilen eingestellt hast?

In dem hochgeladenen Beispiel habe ich nur 3 Datensätze. Da kann ich
auch mit der Pfeiltaste über die Listenfelder gehen. Immer nur der
Inhalt des aktuellen Listenfeldes wird gezeigt, die anderen Anzeigen
verschwinden wieder.

Dass das Makro prinzipiell funktioniert kann ich nachvollziehen. Ich
brauche nur auf eins der Listenfelder zu gehen. Die angezeigten
"Bootständer" der anderen beiden Listenfelder tauchen in der Werteliste
jeweils nicht auf.

Gruß

Robert

Hallo Robert,

ich habe das jetzt einmal hier eingebaut: https://www.familiegrosskopf.de/robert/download/LO_Verein.odbDie Datei ist etwas größer und nicht nur für den "Bug" gebaut. Öffne das Formular "Mitglied" und scrolle ganz nach unten. Dort steht ein Tabellenkontrollfeld für Bootständer. Bei mir wird in diesem Fall der Bootständer für das erste Boot angezeigt.

Ich habe die Datei lokal gespeichert und das Formular wie beschrieben geöffnet. Bei mir wird (links) nichts angezeigt und die Tabelle "Boot" enthält keinen Datensatz?

Gruß, Michael

Hallo Michael,

Ich habe die Datei lokal gespeichert und das Formular wie beschrieben
geöffnet. Bei mir wird (links) nichts angezeigt und die Tabelle "Boot"
enthält keinen Datensatz?

Zwei mögliche Probleme: Der Datensatz von Kurt Dämel wird nicht
angezeigt, weil die Makros ausgeschaltet sind. Dann ist natürlich auch
das ganze Formular "Mitglied" leer.
Welches Mitglied ist denn beim Filter des Formular ausgewählt?

Gruß

Robert

Hallo Michael,

mir ist gerade aufgefallen: War die falsche Datei. Ich habe die Änderung
an einer anderen Datei gemacht.

Jetzt dürfte es klappen. Sind auch mehr Datensätze in "Boot" drin, so
dass die Anzeige manchmal recht kurios teilweise stehen bleibt …

Gruß

Robert

Hi Robert,

ich kann das jetzt nachvollziehen. Wenn ich das Formular "Mitglied"
öffne, wird nur in der obersten Zeile des Tabellenkontrollfelds
Bootständer in der ListBox "Halle und Bootständer" der gewählte
Bootsständer angezeigt. Bei den anderen wird es erst nach anklicken oder
mit den Pfeiltasten navigieren angezeigt.

Von welchem Ereignis hängt denn die Makroausführung ab? Hab das gerade
auf die Schnelle nicht gefunden.

Mein System:
Version: 7.1.0.3 (x64) / LibreOffice Community
Build ID: f6099ecf3d29644b5008cc8f48f42f4a40986e4c
CPU threads: 16; OS: Windows 10.0 Build 19042; UI render: Skia/Raster;
VCL: win
Locale: de-DE (de_DE); UI: de-DE
Calc: CL

Viele Grüße

Stefan

Hallo Robert,

mir ist gerade aufgefallen: War die falsche Datei. Ich habe die Änderung an einer anderen Datei gemacht. Jetzt dürfte es klappen.

Neuer Download, getestet mit Version: 6.4.7.2
Build-ID: 639b8ac485750d5696d7590a72ef1b496725cfb5
CPU-Threads: 4; BS: Linux 5.4; UI-Render: Standard; VCL: kf5;
Gebietsschema: de-DE (de_DE.UTF-8); UI-Sprache: de-DE
Calc: threaded

Für alle Boote kann ich Einträge vornehmen, diese werden angezeigt. Sortiere ich nach dieser Spalte "Halle und ..." sind die Anzeigen weg. Öffne ich das Formular erneut, sind die Anzeigen weg. Laufe ich (in beiden Fällen) mit dem Cursor durch die Zeilen, kommen die Anzeigen Zeile für Zeile zurück.

Gruß Michael

Hallo Stefan,

ich kann das jetzt nachvollziehen. Wenn ich das Formular "Mitglied"
öffne, wird nur in der obersten Zeile des Tabellenkontrollfelds
Bootständer in der ListBox "Halle und Bootständer" der gewählte
Bootsständer angezeigt. Bei den anderen wird es erst nach anklicken oder
mit den Pfeiltasten navigieren angezeigt.

Von welchem Ereignis hängt denn die Makroausführung ab? Hab das gerade
auf die Schnelle nicht gefunden.

Ich habe das an das
Formular → nach dem Datensatzwechsel
gebunden.
Ich habe da auch andere Tricks ausprobiert. Zum Beispiel enthält
natürlich das Listenfeld beim Formularstart alle verfügbaren Werte. Wenn
also das Ereignis nicht greift werden auch die belegten Bootständer
ausgegeben.
Ich kann in den anderen Spalten mit der Pfeiltaste die Bewegung
durchführen. Dann zeigen die Listenfelder weiter nichts an.
Mit dem Listenfeld und dem Tabellensteuerelement sind keine Makros mit
Ereignissen verbunden.

Mein System:
Version: 7.1.0.3 (x64) / LibreOffice Community
Build ID: f6099ecf3d29644b5008cc8f48f42f4a40986e4c
CPU threads: 16; OS: Windows 10.0 Build 19042; UI render: Skia/Raster;
VCL: win
Locale: de-DE (de_DE); UI: de-DE
Calc: CL

Das beruhigt zumindest, dass es nicht nur ein Linux - KDE-Problem ist.

Gruß

Robert

Hallo Robert,

verstehe ich das richtig, dass der Parameter (oEvent as Object) in
deinen Makros das Ereignis übergibt, von dem dein Makro aufgerufen wird?

Grüße Stefan

Hallo Stefan,

verstehe ich das richtig, dass der Parameter (oEvent as Object) in
deinen Makros das Ereignis übergibt, von dem dein Makro aufgerufen wird?

Ja, darüber ermittele ich das Formular. Ich könnte natürlich auch den
genauen Weg über das Dokument beschreiben, aber so ist der Weg immer
gleich - egal wie das Formular heißt und ob es ein Hauptformular oder
Unterformular ist oder was auch sonst.

Gruß

Robert

Cool! Hatte mich schon gefragt, wie man sowas machen kann, um Code
leichter wiederverwendbar zu machen :wink: