[gelöst] Formulare: Maus-Doppelklick erkennen
Moderator: Moderatoren
[gelöst] Formulare: Maus-Doppelklick erkennen
Moin zusammen,
ich habe in meinem Leben weiß Gott schon 1001 OOO-Formulare programmiert, aber an einer Stelle scheitere ich jetzt zum wiederholten Male.
Was will ich tun? - Ich habe in einer Datenbankanwendung z.B. eine Ergebnistabelle innerhalb eines Formulars und möchte nun, dass der Benutzer einen Doppelklick auf eine Zeile macht und daraufhin ein Code ausgeführt wird, der z.B. Details zu diesem Datensatz aufruft oder ihn löscht oder oder oder ...
Da es ja für jedes Control die vordefinierten Ereignisse "Maustaste gedrückt" und "Maustaste losgelassen" gibt, die ich auf der Properties-Page des Controls mit einem Makro hinterfüttern kann, denkt sich mein kleines Gehirn, dass man da ja vielleicht irgendwie die Anzahl der Klicks abfragen kann (wenn Daten als "MouseEvent"-Struct vorliegen, wäre es ja da drin), aber ich verstehe mich nicht darauf, auf in dem Ereignismakro das MouseEvent einzubinden. Geht das? Wenn ja: wie?
Das Pendant in MS Office ist
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
...
End Sub
- da bekommt man die angeklickte Zelle auf dem Silbertablett serviert und der Doppelklick ist auch schon drin.
Oder ist die Lösung nur in den vermaledeiten Listenern zu suchen? Die sind ja nicht gerade leicht zu implementieren und beim Testen schmiert OOO zuverlässig ab. Ich habe mal ein Writer-Dokument mit einem Form und einem Control versucht und dahinein "ThisComponent.CurrentController.addMouseClickHandler(oHorcher)" gemacht. Die Ereignisse MousePressed und MouseReleased wurden wohl getriggert, aber das ist doch mal ehrlich a pain in the ass, für so einen kleinen Doppelklick ein halbes Lexikon programmieren zu müssen.
Wer kann meine Wahrnehmung hier mal geraderücken? Vielen Dank!
ich habe in meinem Leben weiß Gott schon 1001 OOO-Formulare programmiert, aber an einer Stelle scheitere ich jetzt zum wiederholten Male.
Was will ich tun? - Ich habe in einer Datenbankanwendung z.B. eine Ergebnistabelle innerhalb eines Formulars und möchte nun, dass der Benutzer einen Doppelklick auf eine Zeile macht und daraufhin ein Code ausgeführt wird, der z.B. Details zu diesem Datensatz aufruft oder ihn löscht oder oder oder ...
Da es ja für jedes Control die vordefinierten Ereignisse "Maustaste gedrückt" und "Maustaste losgelassen" gibt, die ich auf der Properties-Page des Controls mit einem Makro hinterfüttern kann, denkt sich mein kleines Gehirn, dass man da ja vielleicht irgendwie die Anzahl der Klicks abfragen kann (wenn Daten als "MouseEvent"-Struct vorliegen, wäre es ja da drin), aber ich verstehe mich nicht darauf, auf in dem Ereignismakro das MouseEvent einzubinden. Geht das? Wenn ja: wie?
Das Pendant in MS Office ist
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
...
End Sub
- da bekommt man die angeklickte Zelle auf dem Silbertablett serviert und der Doppelklick ist auch schon drin.
Oder ist die Lösung nur in den vermaledeiten Listenern zu suchen? Die sind ja nicht gerade leicht zu implementieren und beim Testen schmiert OOO zuverlässig ab. Ich habe mal ein Writer-Dokument mit einem Form und einem Control versucht und dahinein "ThisComponent.CurrentController.addMouseClickHandler(oHorcher)" gemacht. Die Ereignisse MousePressed und MouseReleased wurden wohl getriggert, aber das ist doch mal ehrlich a pain in the ass, für so einen kleinen Doppelklick ein halbes Lexikon programmieren zu müssen.
Wer kann meine Wahrnehmung hier mal geraderücken? Vielen Dank!
Zuletzt geändert von wolli-j am Di, 22.01.2013 13:36, insgesamt 1-mal geändert.
Re: Formulare: Maus-Doppelklick erkennen
Hi,
am einfachsten:
Hänge z.B. dieses Makro an ein Maustastenereignis
Um den aktuellen Text auszulesen geht z.B. dies:
Gruß R
am einfachsten:
Hänge z.B. dieses Makro an ein Maustastenereignis
Code: Alles auswählen
Sub S_Mouseclicks(event)
if event.ClickCount = 2 then
msgbox "Doppelklick"
endif
End Sub
Code: Alles auswählen
Sub S_Mouseclicks(event)
if event.ClickCount = 2 then
sstring = event.source.model.Text
msgbox sstring
endif
End Sub
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Formulare: Maus-Doppelklick erkennen
Hej, danke für die rasante Antwort. Im Labortest extrem vielversprechend. 
Anmerkungen:
1000 Grüße, Wolli

Anmerkungen:
- Komisch, dass mir die Möglichkeit der Rückgabe sub xxx(event) noch nie begegnet ist. Würde mich ja mal interessieren, ob das irgendwo dokumentiert ist!
- Interessant, dass das Ereignis schon auftritt, wenn ich das erste Mal klicke. Wenn ich die Sub umschreibe in "msgbox event.clickcount", bekomme ich immer "1" heraus. Darf man das so verstehen, dass das Ereignis nochmal "aufgefrischt" wird, wenn ich das zweite (oder dritte) Mal klicke?
1000 Grüße, Wolli
Re: Formulare: Maus-Doppelklick erkennen
Es ist etwas versteckt, steht aber drin ... und noch mehr interessantes ...wolli-j hat geschrieben:Anmerkungen:
Komisch, dass mir die Möglichkeit der Rückgabe sub xxx(event) noch nie begegnet ist. Würde mich ja mal interessieren, ob das irgendwo dokumentiert ist!
http://wiki.openoffice.org/wiki/Documen ... _to_Events
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
[gelöst] Re: Formulare: Maus-Doppelklick erkennen
Uiuiui, das ist mir gerade etwas mühsam. Den DevGuide hatte ich vor längerer Zeit mal in den Fingern, war mir aber aus den Augen geraten. Ist mal was für unters Kopfkissen 
Hauptsache, ich kann jetzt die Doppelklickerei abfangen - das funktioniert echt fein.
Grüß und Tschüß, Wolli

Hauptsache, ich kann jetzt die Doppelklickerei abfangen - das funktioniert echt fein.
Grüß und Tschüß, Wolli
Re: Formulare: Maus-Doppelklick erkennen
Ich habe es mitF3K Total hat geschrieben:Hi,
am einfachsten:
Hänge z.B. dieses Makro an ein MaustastenereignisUm den aktuellen Text auszulesen geht z.B. dies:Code: Alles auswählen
Sub S_Mouseclicks(event) if event.ClickCount = 2 then msgbox "Doppelklick" endif End Sub
Gruß RCode: Alles auswählen
Sub S_Mouseclicks(event) if event.ClickCount = 2 then sstring = event.source.model.Text msgbox sstring endif End Sub
Code: Alles auswählen
sstring = event.source.model.Text
msgbox sstring
"BASIC runtime error.
Property or method not found: model."
Was habe ich falsch gemacht?
Re: [gelöst] Formulare: Maus-Doppelklick erkennen
Hallo
Karolus
Das findest du für 'dein' event am besten per http://extensions.services.openoffice.o ... roject/MRI heraus.Was habe ich falsch gemacht?
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: [gelöst] Formulare: Maus-Doppelklick erkennen
Vielen Dank, werde ich versuchen.