Italian B4J Gestire un LongClick, come fare.

calsdn

Member
Licensed User
Un caro saluto a tutti.

Ho la necessità di gestire un longclick.
Non lo vedo tra gli eventi disponibili.

Come si può fare?
grazie
 

giannimaione

Well-Known Member
Licensed User
Longtime User
a quale oggetto ti riferisci ? (bottone, casella di testo... ) in genera basta far riferimento ad "EventData" per verificare l'evento click tasto dx, tasto sx, singolo click o doppio ecc.
 
Last edited:

calsdn

Member
Licensed User
Forse stò vedendo solo la foglia e non l'albero ma ... quando dal visual designer vado a "generate member" da "Tools" non vedo l'evento LongClick.
Questo sia per Button, Pane, TextField, ScrollPane e altri.

Su "EventData" vedo ClickCount, le coordinate e quale tasto.

Mi sfugge qualcosa?
 

moster67

Expert
Licensed User
Longtime User
Ma si usa longclick per desktop? Sembra più una cosa per touch.....
 

giannimaione

Well-Known Member
Licensed User
Longtime User
con B4A ci sono due possibili eventi (un TAP "click" breve, ed un TAP "longclik" lungo)
invece con B4J con il seguente codice è possibile gestire il click del tasto SX o del tasto DX (ed altri eventi)
B4X:
Sub Button1_MouseClicked (EventData As MouseEvent)
   If EventData.SecondaryButtonPressed=True Then
     Log ("click tasto DX")
   End If
   If EventData.PrimaryButtonPressed=True Then
     Log ("click tasto SX")
   End If
End Sub
 

moster67

Expert
Licensed User
Longtime User
Infatti su Desktop si usa il doubleclick ma in B4J non c'è nemmeno quello.
D'accordo con te che si aspetta il nome "doubleclick" ...comunque c'è (esempio trovato qui sul forum per un label) :

B4X:
Sub label_MouseClicked (EventData As MouseEvent)
    If EventData.ClickCount = 2 Then
        Log("Label :" & lbl.Tag)
    End If
End Sub
 

moster67

Expert
Licensed User
Longtime User
Non puoi fare un confronto diretto con VS e comparare gli eventi di click. VS è stato pensato per il mondo di Windows.

B4J si usa per sviluppare programmi che girano su operativi sistemi (grafici) diversi (MAC, Linux, Windows ed altri) dove l'uso del mouse e sua azione è diversa di Windows. Trovo la soluzione di contare i click geniale.
 

moster67

Expert
Licensed User
Longtime User
C'è. Guarda il snippet che ho postato prima.
 

calsdn

Member
Licensed User
Ho un tablet windows, motivo per cui uso B4J, e quindi il touch e gesture varie sostituiscono il mouse.
Eventdata espone solo ClickCount, ti dice quale tasto hai premuto e le coordinate dove hai fatto click (ops touch).

Credo a questo punto che dovrei inventarmi qualcosa con l'accoppiata di un timer ...

Any suggest?
 

giannimaione

Well-Known Member
Licensed User
Longtime User
se non sbaglio, EventData.ClickCount , conta quante volte si è fatto click con il mouse in modo "veloce"... quindi può anche restiuire 3 , 4 , ecc.
 
Top