Hallo,
auf einen Basic-Dialog befindet sich ein Grid-Steuerelement (com.sun.star.awt.grid.UnoControlGrid). Bei diesem Steuerelement werden eine oder mehrere Zeilen per Maus händisch markiert.
Wie kann ich diese Markierung händisch per Tastaturshortcut bzw. Tastatur plus Maus wieder komplett aufheben?
Das Problem ist das man zwar mehrere markierte Zeilen per Maus auf eine markierte Zeile reduzieren kann (indem man einfach auf irgendeine Zeile klickt), aber wie bekommen ich die letzte Zeile demarkiert?
Es ist KEINE Lösung per Makro gesucht, sondern per händischer Bedienung per Tastatur/Maus.
Gruß
Stephan
com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben
Moderator: Moderatoren
Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben
Hey Stephan,
das wird voraussichtlich gar nicht gehen.
Beim Markieren /Klicken im Control wird ein Mouse-Event ausgewertet und entsprechend die Zelle/Zeile markiert.
Zum Deaktivieren bräuchtest Du halt wieder einen Code (und entsprechend einen Auslöser) - aber der ist sicher nicht im Control direkt verarbeitet. Um sicher zu gehen, müsstest Du den Quell-Code durchforsten;)
Also wirst Du ohne Makro nicht hinkommen - bleibt also nur, selbst eine Tastaturcode mit einem Makro vorzubelegen, der die Markierung des aktuellen Grid-Elementes aufhebt (wenn es ein Dialog ist, sollte dieser ja zu identifizieren sein).
Technisch sollste es auch möglich sein, mit einer Extension einen speziellen Tastaturcode-
Shortcut mit auszuliefern und zu installieren ( in der Addon.xcu) - hab es aber selbst noch nie probiert.
VG Tom
das wird voraussichtlich gar nicht gehen.
Beim Markieren /Klicken im Control wird ein Mouse-Event ausgewertet und entsprechend die Zelle/Zeile markiert.
Zum Deaktivieren bräuchtest Du halt wieder einen Code (und entsprechend einen Auslöser) - aber der ist sicher nicht im Control direkt verarbeitet. Um sicher zu gehen, müsstest Du den Quell-Code durchforsten;)
Also wirst Du ohne Makro nicht hinkommen - bleibt also nur, selbst eine Tastaturcode mit einem Makro vorzubelegen, der die Markierung des aktuellen Grid-Elementes aufhebt (wenn es ein Dialog ist, sollte dieser ja zu identifizieren sein).
Technisch sollste es auch möglich sein, mit einer Extension einen speziellen Tastaturcode-
Shortcut mit auszuliefern und zu installieren ( in der Addon.xcu) - hab es aber selbst noch nie probiert.
VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben
Hallo Tom,
mmh ... vielleicht kann ich das ja tatsächlich per Code machen, ein com.sun.star.awt.XMouseListener ist ohnehin schon für das Grid registriert um Doppelklicks abzufangen und einen Unterdialog zu öffnen (das klappt ganz gut).
Du weist nicht zufällig ob ich bei obigen Listener zusätzlich eine gedrückt gehalte STRG-Taste direkt erkennen kann? Wahrscheinlich muss ich da noch einen Listener zusätzlich registrieren und das Tastaturereignis separat auswerten.
Gruß
Stephan
mmh ... vielleicht kann ich das ja tatsächlich per Code machen, ein com.sun.star.awt.XMouseListener ist ohnehin schon für das Grid registriert um Doppelklicks abzufangen und einen Unterdialog zu öffnen (das klappt ganz gut).
Du weist nicht zufällig ob ich bei obigen Listener zusätzlich eine gedrückt gehalte STRG-Taste direkt erkennen kann? Wahrscheinlich muss ich da noch einen Listener zusätzlich registrieren und das Tastaturereignis separat auswerten.
ja, das wäre eine Lösung, gemacht habe ich das aber auch noch hier (bzw. nur bei Dokumentmakros).Technisch sollste es auch möglich sein, mit einer Extension einen speziellen Tastaturcode-
Shortcut mit auszuliefern und zu installieren ( in der Addon.xcu) - hab es aber selbst noch nie probiert.
Gruß
Stephan
Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben
Hey Stephan,
Ne, da wirste wohl zusätzlich ne Key-Listener (XKeyHandler) aktivieren müssen und dann entsprechende Keys abfangen. Gibt ne paar Beispiele hierzu - z.B., -->hier.
Aber, was spricht eigentlich gegen eine Schaltfläche irgendwo direkt an oder unter dem Grid-Control? So etwas wie "Selektion entfernen". Wenn doch sowieso mit der Maus gearbeitet wird?
VG
Tom
Ziemlich sicher "Nein". Wäre ja auch ein eher ungewöhnlicher UI-Einstieg;) Hier heisst es txypischerweise: Entweder Maus oder Tastatur. Eine Kombination beider ist sehr unüblich und ergonomisch nicht wirklich gut gelöst..... ob ich bei obigen Listener zusätzlich eine gedrückt gehalte STRG-Taste direkt erkennen kann?
Ne, da wirste wohl zusätzlich ne Key-Listener (XKeyHandler) aktivieren müssen und dann entsprechende Keys abfangen. Gibt ne paar Beispiele hierzu - z.B., -->hier.
Aber, was spricht eigentlich gegen eine Schaltfläche irgendwo direkt an oder unter dem Grid-Control? So etwas wie "Selektion entfernen". Wenn doch sowieso mit der Maus gearbeitet wird?
VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben
Hallo Tom,
Gruß
Stephan
Ich glaube wir benutzen alle täglich STRG+Maus und UMSCHALT+Maus z.b. für Auswahlaktionen im Windows-Explorer ... dort gilt z.B. das STRG+Maus eine bereits gewählte Datei wieder abwählt, so fände ich das auch für das Grid ganz gut.Entweder Maus oder Tastatur. Eine Kombination beider ist sehr unüblich und ergonomisch nicht wirklich gut gelöst..
Eigentlich nur mein persönlicher Geschmack. Ich weiß aber garnicht was mein Kunde sagt, vielleicht findet der eine Schaltfläche völlig OK, dann wäre schon alles gelöst.Aber, was spricht eigentlich gegen eine Schaltfläche irgendwo direkt an oder unter dem Grid-Control?
Gruß
Stephan
Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben
und es geht doch ...
Folgender Code für das Ereignis "mousePressed" des MouseListeners löst mein Problem OHNE KeyListener:
oEvent.Modifiers = 2 entspricht hierbei der gedrückt gehaltenen STRG-Taste während des Mausklicks.
Gruß
Stephan
Folgender Code für das Ereignis "mousePressed" des MouseListeners löst mein Problem OHNE KeyListener:
Code: Alles auswählen
Sub XKlick_mousePressed(oEvent)
On Error Goto raus 'blockiert Fokuseregnis bei existierende Markierung, aber inaktivem Grid
If oEvent.ClickCount = 2 And oEvent.Modifiers = 0 Then
person_editieren() 'Start Dialog "Person"
ElseIf oEvent.ClickCount = 1 And oEvent.Modifiers = 2 Then
If Not(oGridControl_2.isRowSelected(oGridControl_2.CurrentRow)) Then
oGridControl_2.deselectRow(oGridControl_2.CurrentRow)
End If
End If
raus:
End Sub
Gruß
Stephan