Mousedown auf Button

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

Hubsi

Betreff: Mousedown auf Button

BeitragFr, Dez 01, 2017 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Nadend beisammen,

ich habe einen Button und möchte in jedem Schleifendurchlauf prüfen ob selbiger gedrückt ist (dauerhaft, MouseDown() quasi). Hab dann mit dem Event $201 experimentiert komme aber zu keinem Ergebniss. Stell ich mich einfach zu doof oder ist das schlicht nicht möglich?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Holzchopf

Meisterpacker

BeitragFr, Dez 01, 2017 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Also $201 wird ja nur ausgelöst in dem Moment, wo die Maustaste vom ungedrückten in den gedrückten Zustand wechselt Wink Ich würde mit einer globalen Variablen arbeiten, die du auf 1 setzt, wenn ein $201 Event kommt und auf 0, wenn ein $202 (MouseUp) Event kommt. Evtl. musst du auch 0 setzen, wenn ein AppSuspend kommt oder sonstige Sonderfälle berücksichtigen Confused

Auf jeden Fall kannst du dann anhand dieser Variable prüfen, ob die Maustaste gedrückt ist.

MfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

count-doku

BeitragSa, Dez 02, 2017 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Alternativ mit der Windows API und GetAsyncKeyState arbeiten. Dazu dann noch prüfen, ob dein Programm gerade aktiv/im Vordergrund ist und fertig

Hubsi

BeitragSo, Dez 03, 2017 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Es will mir einfach nicht hinhauen Smile

BlitzBasic: [AUSKLAPPEN]
event=WaitEvent(0)

If event<>0 Then
.
.
.
If event=$201 Then
manual_forward=True
DebugLog EventSource()
DebugLog button_102
Stop
.
.
.
EndIf

If manual_backward Or manual_forward Then
If event=$202 Then
manual_forward=False
.
.
EndIf
EndIf
EndIf


In der Form tut er so als hätte es nie einen Klick gegeben. Frage ich dagegen nach dem Event $401 ab bekomme ich die Debugausgaben und den Stop. Aber leider erst dann wenn ich die Maustaste loslasse Very Happy Ich könnte das ganze auch quick and dirty über die Tastatur laufen lassen, möchte ich aber nicht für immer und ewig. Was mache ich falsch? Very Happy

Den AsyncKeyState habe ich auch gegooglet, das bezieht sich aber immer auf die Tastatur? Und kann ich damit überhaupt die mit Plus erstellten Buttons abfangen?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Dez 03, 2017 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
das Problem wird sein das die Mouseevents nur auf Canvas funktionieren!
[BB2D | BB3D | BB+]

count-doku

BeitragSo, Dez 03, 2017 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja und Nein. AsyncKeyState aus der Winapi geht für alle Hardwareknöpfe (Also auch Maus), aber nicht speziell für Elemente auf der Oberfläche.

Mein Gedanke war halt, das du das erste Button Down Event per B+ abfängst und dann checkst ob die Taste per GetAsyncKeystate noch gedrückt ist. Aber Holzchopfs Lösung ist an sich schon besser...

Wenn es explizit um einen BlitzPlus Button geht, was spricht dann gegen ButtonState?
EDIT: Habe gerade gemerkt, das ButtonState mit Buttons irgendwie nicht richtig funktioniert :/ Schade

lg,
Count-Doku

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Dez 03, 2017 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Buttonstate funktioniert nicht bei den Standart Button
ich würde jetzt einfach einen eigenen Button mit canvas erstellen und den mittels Mousedown prüfen!
[BB2D | BB3D | BB+]

Hubsi

BeitragSo, Dez 03, 2017 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, dann werdens wohl hausgemachte Buttons in einem Canvas werden Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Thunder

BeitragMo, Dez 04, 2017 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich mich richtig erinnere solltest du ein GadgetAction event bekommen ($401) dann musst du noch den EventSource() prüfen, ob das deinen Button zurückgibt (damit du mehrere Buttons abfragen kannst).

Edit: ich seh gerade, du willst schon ein Event bekommen, wenn der Button gedrückt wird. Mein Fehler.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group