Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Doppelklick

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 21.06.2012, 12:33    Titel: Doppelklick Antworten mit Zitat

Hey lächeln
Ich würde gerne wissen, wie ich prüfen kann, ob ein Doppelklick mit der Maus stattgefunden hat. Ich dachte mir zuerst, ich könnte es ungefähr so machen:
Code:
Function DoppelKlick()As Integer
  If MouseB=1 Then 'Maustaste wurde gedrückt
     klick+=1
     If klick=2 Then 'Wurde 2mal gedrückt
        Return 1
        klick=0
     Else
        Return 0
     End If
  End If
End Function

Allerdings funktioniert das ganze natürlich nicht ganz. Gibt es eine Möglichkeit, meinen Code doch noch zum Laufen zu bringen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 21.06.2012, 13:56    Titel: Antworten mit Zitat

Wenn der Doppelklick nur an einer bestimmten Stelle im Programm gebraucht wird, kann man folgendes im Hauptprogramm (ohne Funktion) machen:

Code:

DIM mk AS INTEGER
mk = 0
DO
getmaus
IF mausk% = 1 then mk += 1
IF mk > 2 THEN ' "MausDoppelKlick"
LOOP


Ich würde aber noch die verstrichene Zeit zwischen 2 Mausklicks mit abfragen.

Mehr als 1 Sekunde verstrichene Zeit zwischen 2 Mausklicks ist dann kein Doppelklick.

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 21.06.2012, 14:20    Titel: Antworten mit Zitat

warum nicht mit
Code:
SCREENEVENT(event)
auf EVENT_MOUSE_DOUBLE_CLICK testen?
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 21.06.2012, 14:50    Titel: Antworten mit Zitat

Du müsstest theoretisch auf einen Mausklick warten, dann darauf warten, dass keine Maus mehr gedrückt ist und dann wieder auf Mausklick warten - und das muss in einer festgelegten Zeit stattfinden (in welchem Zeitraum das eben als Doppelklick gewertet werden soll). SCREENEVENT ist da auf jeden Fall die sinnvollere Lösung.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 21.06.2012, 15:28    Titel: Antworten mit Zitat

Bei mir funktioniert es nicht mit Screenevent:
Code:
#INCLUDE "fbgfx.bi"
Screen 12

DIM AS FB.EVENT PTR event
event = ALLOCATE(20)

Do
   Sleep 1,1
   ScreenLock
      Cls
      If (ScreenEvent(event)) Then
         Select Case event->type
         Case FB.EVENT_MOUSE_DOUBLE_CLICK
            Draw String (10,10),"Doppelklick"
         End Select
      End If
   ScreenUnlock
Loop Until Inkey=Chr(27)
DEALLOCATE event
End

Scheint mir aber der richtige Code zu sein ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 21.06.2012, 17:09    Titel: Antworten mit Zitat

CLS sorgt für eine nur sehr kurze Ansicht von "Doppelklick".
Code:
#Include "fbgfx.bi"
Screen 12

Dim As FB.EVENT evt

Do
  Sleep 1,1
  ScreenLock
  'cls
  If ScreenEvent(@evt) Then
    If evt.button = FB.BUTTON_LEFT Then
      If evt.Type = FB.EVENT_MOUSE_DOUBLE_CLICK Then
        Print "Doppelklick"
      EndIf
    EndIf
  End If
  ScreenUnlock
Loop Until InKey = Chr(27)
End
Hier nur für den Doppelklick der linken Maustaste.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 21.06.2012, 18:08    Titel: Antworten mit Zitat

Oh verlegen
Dummer Fehler meinerseits, danke für die Hilfe. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz