Italian click da altro modulo

fireblade

Member
Supponendo che ho il modulo1 e il modulo2, in che modo posso farre che premendo il tasto back dal modulo2 riesco a richiamare una sub al modulo1?
 

Dominex

Active Member
Licensed User
Longtime User
Non ho provato, ma forse con un codice di questo tipo:

B4X:
'Nel modulo2 inserisci:

Sub Activity_KeyPress (KeyCode As Int) As Boolean
   Select KeyCode
      Case KeyCodes.KEYCODE_BACK
         modulo1.Activity_KeyPress (KeyCodes.KEYCODE_BACK)
   End Select
End Sub
 

fireblade

Member
mi sono spiegato male io...
dal modulo2 se premo il tasto back, come simulo la pressione di
Sub button1_Click che si trova nel modulo1?(in modo da eseguire il codice del button1)
 

GaNdAlF89

Active Member
Licensed User
Longtime User
vorrei capire, vuoi che la pressione del tasto back ti riporti al modulo precedente e subito dopo eseguire la sub che dici, oppure vuoi solo l'esecuzione della sub del modulo 1 mantenendo attivo il modulo 2?
 

fireblade

Member
vorrei capire, vuoi che la pressione del tasto back ti riporti al modulo precedente e subito dopo eseguire la sub che dici, oppure vuoi solo l'esecuzione della sub del modulo 1 mantenendo attivo il modulo 2?

la prima che hai detto...
la pressione del tasto back dal modulo2 mi riporta al modulo1 e deve eseguire la sub.
 

GaNdAlF89

Active Member
Licensed User
Longtime User
quando un'activity 'riacquista' il focus (in questo caso il modulo 1 dopo l'uscita dal modulo 2), esegue la Sub Activity_Resume, quindi potresti richiamare qui dentro la sub del button che ti interessa...

nota però che la Sub Activity_Resume viene anche eseguita la prima volta appena viene caricata in memoria l'activity, e cioè dopo la Sub Activity_Create; quindi per evitare che la sub del button venga eseguita anche all'inizio, metti un'istruzione If nella Sub Activity_Resume.
per far questo potresti settare a false una variabile globale come flag, che viene settata a true quando viene eseguito il modulo 2 (Sub Activity_Resume, del modulo 2). al ritorno nel modulo 1, nella Sub Activity_Resume (del modulo 1) fai il check di questa variabile, e se è true esegui la sub del button e resetti a false la variabile. mentre negli altri casi (dopo Sub Activity_Create, o comunque 'non-ritorno' dal modulo 2) la sub del button non viene eseguita poichè il flag è false (come impostato di default).

spero di esser stato chiaro e di aiuto! :)
 
Last edited:

GaNdAlF89

Active Member
Licensed User
Longtime User
per maggiore chiarezza allego un esempio di quanto ho detto:

Modulo 1
B4X:
Sub Process_Globals
    Dim flag As Boolean
    flag = False
End Sub

Sub Activity_Resume
    If flag=True then
        Button1_Click
        flag = False
    End If
End Sub

Modulo 2
B4X:
Sub Activity_Resume
    Modulo1.flag = True
End Sub
 

fireblade

Member
per maggiore chiarezza allego un esempio di quanto ho detto:

Modulo 1
B4X:
Sub Process_Globals
    Dim flag As Boolean
    flag = False
End Sub

Sub Activity_Resume
    If flag=True then
        Button1_Click
        flag = False
    End If
End Sub

Modulo 2
B4X:
Sub Activity_Resume
    Modulo1.flag = True
End Sub

Sei stato molto chiaro e di grande aiuto, infatti ho capito...e provato il tuo codice, funziona alla grande.
Grazie mille per l'aiuto
 

fireblade

Member
E se io volessi copiare (tramite un button presente nel modulo1) il contenuto della txtbox presente nel modulo1 in una txtbox del modulo2?
 

GaNdAlF89

Active Member
Licensed User
Longtime User
E se io volessi copiare (tramite un button presente nel modulo1) il contenuto della txtbox presente nel modulo1 in una txtbox del modulo2?

dichiara sempre in Process_Globals una variabile di tipo String, che viene valorizzata nella Sub Button_Click in base al contenuto della txtbox, poi appena apri il modulo 2, in Activity_Resume del modulo 2 setti il valore della txtbox leggendo dalla variabile globale. per far questo utilizza anche un flag per controllare che il valore in txtbox2 sia inserito solo quando clicchi sul button.

Esempio:

Modulo 1
B4X:
Sub Process_Globals
    Dim change_flag as Boolean
    change_flag = False
    Dim str As String
End Sub

Sub Button_Click
    str = txtbox1.text
    change_flag = True
End Sub

Modulo 2
B4X:
Sub Activity_Resume
    If Modulo1.change_flag=True Then
        txtbox2.text = Modulo1.str
        Modulo1.change_flag = False
   End If
End Sub
 
Last edited:
Top