🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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
* LO-Experte *
Beiträge: 1081
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) 202-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 gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten