BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Doppel-Click Event im Gridcontrol

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
MaddinR
Beiträge: 42
Registriert: Fr 17. Jun 2011, 12:19

[gelöst] Doppel-Click Event im Gridcontrol

Beitrag von MaddinR » Di 22. Okt 2019, 12:36

Hi Leute

In der Hoffnung auf Eure Unterstützung bei der Lösung eines neuen Problems wende ich mich noch mal hier ans Forum. Hier ist ein neues Problem mit dem Releasewechsel auf 6.3 aufgetaucht, und zwar in einem Base-Formular.

Das Formular enthält ein einfaches Grid-Control und den folgenden Eventhandler-Verweis in diesem Control. Also, Steuerelement-Eigenschaften -> Ereignisse:
Maustaste losgelassen = Standard.UpdateSetNormNames.OnDoppelClick (document, Basic)

Der Eventhandler sieht so aus:

Code: Alles auswählen

Sub OnDoppelClick(oEvt)
   if (oEvt.ClickCount = 2) then
'      MsgBox "Doppelclick" 
       GetNormName(EH_DBLCLICK)
   endif
End Sub
Bei einem Single-Click passiert korrekterweise nix, bei einem Doppelklick wird GetNormName() allerdings immer 2 mal aufgerufen... mit natürlich fehlerhaften Auswirkungen. Ich kann das mangels Routine auch nicht richtig debuggen, mit aktiver Messagebox ist die Click-Verarbeitung natürlich unterbrochen und der Fehler passiert nicht , ebenso wenn ich mir ein xray-Fenster anschauen wollte. Der Fehler mit 2-fachen Aufruf passiert nur, wenn das Programm ununterbrochen durchläuft. Hat vielleicht jemand eine Idee, wie man das lösen kann? :roll:

mfg, Martin
Zuletzt geändert von MaddinR am So 27. Okt 2019, 11:07, insgesamt 1-mal geändert.
Gruß, Maddin

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Doppel-Click Event im Gridcontrol

Beitrag von gogo » Di 22. Okt 2019, 20:17

Eigentlich dürfte das nicht passieren, denn in einer Klick-Folge taucht oEvt.ClickCount = 2 nur beim zweiten Klick auf. Und beim ersten MouseButtonUp ist immer oEvt.ClickCount = 1.

Versuch' bezüglich log das File im Anhang.
Wenn Du die Sub "Main" durch den Code unten ersetzt, dann wird nur im Doppelklickfall die Box angezeigt (bei der Lösung >= käme auch bei 3-fach-Klicks die Box ...

Code: Alles auswählen

Sub Main(oEvent)
	logTxt = oEvent.Source.Model.parent.getbyname("Log")
	logTxt.setString(logTxt.string & CHR$(10) & now & " " & oEvent.ClickCount & " " & gCC)
	select case oEvent.ClickCount
	case 2
		msgbox "DOPPELKLICK!"
		logTxt.setString(logTxt.string & " >> " & oEvent.ClickCount & " " & "BINGO + reset")
	case else
		logTxt.setString(logTxt.string & " >> " & oEvent.ClickCount & " " & "             ")
	end select
	logTxt.setString(logTxt.string & " >> " & oEvent.ClickCount & " " & gCC)
End Sub
Dateianhänge
Firebird_Base_Test.zip
(10.69 KiB) 143-mal heruntergeladen
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

MaddinR
Beiträge: 42
Registriert: Fr 17. Jun 2011, 12:19

Re: Doppel-Click Event im Gridcontrol

Beitrag von MaddinR » So 27. Okt 2019, 11:07

Moin

Nachdem mir das den ganzen Tag keine Ruhe gelassen hat, habe ich nach Stunden selber eine Lösung gefunden ... und leider darüber vergessen, dass hier mitzuteilen.... :roll:

Der Eventhandler sieht nun so aus... was hier durch den Umstand, dass ich kein unsigned long definieren kann, etwas verwirrend aussieht... wegen minus 500.... ging aber leider nicht anders. Und wie es aussieht, ist das wohl ein Timing-Problem, eines das es vorher nicht gab. Aber egal... jetzt läufts erst mal.

Code: Alles auswählen

Sub OnDoppelClick(oEvt)
    if (oEvt.ClickCount = 2) then
'        MsgBox "Doppelclick" 

        ticksnow = -GetSystemTicks()
        
        if ticksnow < TicksLast or TicksLast = 0 then
            TicksLast = ticksnow - 500
            GetNormName(EH_DBLCLICK)
        endif
    endif
End Sub
Gruß, Maddin

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten