[gelöst] Formulare: Maus-Doppelklick erkennen

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

Moderator: Moderatoren

wolli-j
**
Beiträge: 33
Registriert: Fr, 06.08.2010 13:10

[gelöst] Formulare: Maus-Doppelklick erkennen

Beitrag von wolli-j »

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!
Zuletzt geändert von wolli-j am Di, 22.01.2013 13:36, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Formulare: Maus-Doppelklick erkennen

Beitrag von F3K Total »

Hi,
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
Um den aktuellen Text auszulesen geht z.B. dies:

Code: Alles auswählen

Sub S_Mouseclicks(event)
    if event.ClickCount = 2 then
        sstring = event.source.model.Text
        msgbox sstring
    endif
End Sub
Gruß R
wolli-j
**
Beiträge: 33
Registriert: Fr, 06.08.2010 13:10

Re: Formulare: Maus-Doppelklick erkennen

Beitrag von wolli-j »

Hej, danke für die rasante Antwort. Im Labortest extrem vielversprechend. :-)

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?
Gerade lese ich auch Deinen Nachklapp mit event.source.model.Text. Sehr hilfreich, vielen Dank.

1000 Grüße, Wolli
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Formulare: Maus-Doppelklick erkennen

Beitrag von F3K Total »

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!
Es ist etwas versteckt, steht aber drin ... und noch mehr interessantes ...
http://wiki.openoffice.org/wiki/Documen ... _to_Events

Gruß R
wolli-j
**
Beiträge: 33
Registriert: Fr, 06.08.2010 13:10

[gelöst] Re: Formulare: Maus-Doppelklick erkennen

Beitrag von wolli-j »

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
Jonny1
***
Beiträge: 55
Registriert: Mi, 12.01.2011 21:49

Re: Formulare: Maus-Doppelklick erkennen

Beitrag von Jonny1 »

F3K Total hat geschrieben:Hi,
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
Um den aktuellen Text auszulesen geht z.B. dies:

Code: Alles auswählen

Sub S_Mouseclicks(event)
    if event.ClickCount = 2 then
        sstring = event.source.model.Text
        msgbox sstring
    endif
End Sub
Gruß R
Ich habe es mit

Code: Alles auswählen

        sstring = event.source.model.Text
        msgbox sstring
versucht und eine Fehlermeldung erhalten:

"BASIC runtime error.
Property or method not found: model."


Was habe ich falsch gemacht?
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: [gelöst] Formulare: Maus-Doppelklick erkennen

Beitrag von Karolus »

Hallo
Was habe ich falsch gemacht?
Das findest du für 'dein' event am besten per http://extensions.services.openoffice.o ... roject/MRI heraus.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Jonny1
***
Beiträge: 55
Registriert: Mi, 12.01.2011 21:49

Re: [gelöst] Formulare: Maus-Doppelklick erkennen

Beitrag von Jonny1 »

Vielen Dank, werde ich versuchen.
Antworten