com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Stephan
********
Beiträge: 11071
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben

Beitrag von Stephan » Di, 12.03.2019 20:53

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

Toxitom
********
Beiträge: 3572
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben

Beitrag von Toxitom » Mi, 13.03.2019 08:42

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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

Stephan
********
Beiträge: 11071
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben

Beitrag von Stephan » Mi, 13.03.2019 10:45

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.
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.
ja, das wäre eine Lösung, gemacht habe ich das aber auch noch hier (bzw. nur bei Dokumentmakros).


Gruß
Stephan

Toxitom
********
Beiträge: 3572
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben

Beitrag von Toxitom » Mi, 13.03.2019 12:36

Hey Stephan,
... ob ich bei obigen Listener zusätzlich eine gedrückt gehalte STRG-Taste direkt erkennen kann?
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..

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

Stephan
********
Beiträge: 11071
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben

Beitrag von Stephan » Mi, 13.03.2019 15:57

Hallo Tom,
Entweder Maus oder Tastatur. Eine Kombination beider ist sehr unüblich und ergonomisch nicht wirklich gut gelöst..
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.
Aber, was spricht eigentlich gegen eine Schaltfläche irgendwo direkt an oder unter dem Grid-Control?
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.


Gruß
Stephan

Stephan
********
Beiträge: 11071
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: com.sun.star.awt.grid.UnoControlGrid - Shortcut um die Auswahl aufzuheben

Beitrag von Stephan » Mi, 13.03.2019 20:41

und es geht doch ...

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
oEvent.Modifiers = 2 entspricht hierbei der gedrückt gehaltenen STRG-Taste während des Mausklicks.


Gruß
Stephan

Antworten