French MsgBox

jojo12

Member
Licensed User
J'avais cet ancien code avec Msgbox2. Si le fichier n'était pas sauvegardé lors de l'appui sur la touche Back, le programme me demandait de sauvegarder le fichier et le Back s'opérait :

Sub Activity_KeyPress (KeyCode As Int) As Boolean
If KeyCode = KeyCodes.KEYCODE_BACK Then
'Vérifier que l'on sauvegarde bien le fichier si celui-ci a été modifié
If enregOK = True Then
Dim result As Int
result = Msgbox2("Voulez-vous sauvegarder les modifications ?", "Sauvegarde du fichier", _
"Oui", "", "Non", Null)
If result = DialogResponse.POSITIVE Then btnEnr_Click
End If
End If
End Sub

Avec le nouveau code, j'ai voulu remplacer Msgbox2 par Msgbox2Async et aussi tenir compte du signalement comme quoi aucune valeur booléenne n'était renvoyée dans le code ci-dessus :

Sub Activity_KeyPress (KeyCode As Int) As Boolean
If KeyCode = KeyCodes.KEYCODE_BACK Then
'Vérifier que l'on sauvegarde bien le fichier si celui-ci a été modifié
If enregOK = True Then

openMsgBox
Return True
Else
Return False
End If
Else
Return False
End If
End Sub
Sub openMsgBox
Msgbox2Async("Voulez-vous sauvegarder les modifications ?", "Sauvegarde du fichier", "Oui", "", "Non", Null, False)
Wait For Msgbox_Result (Result As Int)
If Result=DialogResponse.POSITIVE Then
btnEnr_Click
End If
End Sub

L'ennui (mineur), c'est qu'avec Return True, il m'affiche le message et me laisse le temps de répondre, mais il n'effectue pas ensuite le Back contrairement avec l'ancien code.
Si je change Return True en Return False, je n'ai pas le temps de répondre à la question car il me fait un Back immédiat.

N'est-il pas possible de retrouver le fonctionnement de l'ancien code : répondre à la question et Back automatique ensuite ?
 

klaus

Expert
Licensed User
Longtime User
Essaies ceci:

B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK Then
    'Vérifier que l'on sauvegarde bien le fichier si celui-ci a été modifié
        Msgbox2Async("Voulez-vous sauvegarder les modifications ?", "Sauvegarde du fichier", "Oui", "", "Non", Null, False)
        Wait For Msgbox_Result (Result As Int)
        If Result=DialogResponse.POSITIVE Then
            btnEnr_Click
            Return True
        Else
            Return False
        End If
    End If
End Sub
 

jojo12

Member
Licensed User
Dans l'exemple que tu as donné, je constate que la question est posée systématiquement quand auparavant elle était posée uniquement dans le cas où le fichier avait été modifié.
Je ne comprends pas pourquoi le Wait For semble ne pas marcher.
 

Serge Bertet

Active Member
Licensed User
C'est vrai, il manque un test.
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK And enregOK Then ' <== à ajouter
        'Vérifier que l'on sauvegarde bien le fichier si celui-ci a été modifié
        Msgbox2Async("Voulez-vous sauvegarder les modifications ?", "Sauvegarde du fichier", "Oui", "", "Non", Null, False)
        Wait For Msgbox_Result (Result As Int)
        If Result=DialogResponse.POSITIVE Then
            btnEnr_Click
            Return True
        Else
            Return False
        End If
    End If
End Sub
 

klaus

Expert
Licensed User
Longtime User
J'ai encore ajouté le dernier Return False
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK And enregOK Then ' <== à ajouter
        'Vérifier que l'on sauvegarde bien le fichier si celui-ci a été modifié
        Msgbox2Async("Voulez-vous sauvegarder les modifications ?", "Sauvegarde du fichier", "Oui", "", "Non", Null, False)
        Wait For Msgbox_Result (Result As Int)
        If Result=DialogResponse.POSITIVE Then
            btnEnr_Click
            Return True
        Else
            Return False
        End If
    Else
        Return False
    End If
End Sub
 

jojo12

Member
Licensed User
Voici l'erreur

B4A Version : 12.80
Analyse du code. Error
Erreur d'analyse de programme.
Erreur de description : Le Type de renvoi de 'resumable' Sub doit être ResumableSub (ou rien).
Une erreur s'est produite en ligne : 419 (Editeur)
Sub Activity_KeyPress (KeyCode As Int) As Boolean


Et ça je ne sais pas comment le gérer.
 

Serge Bertet

Active Member
Licensed User
De mémoire, un truc comme ça :
B4X:
Sub Activity_KeyPress (KeyCode As Int) As ResumableSub
 

Serge Bertet

Active Member
Licensed User
Erreur de description : Le Type de renvoi de 'resumable' Sub doit être ResumableSub (ou rien).
Le message d'erreur doit être différent du précédent maintenant, non ?
 

klaus

Expert
Licensed User
Longtime User
Ce code fonctionne.

B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK Then
        If enregOK = False Then
            openMsgBox
            Return True
        End If
    End If
    Return False
End Sub

Private Sub openMsgBox
    Msgbox2Async("Voulez-vous sauvegarder les modifications ?", "Sauvegarde du fichier", "Oui", "", "Non", Null, False)
    Wait For Msgbox_Result (Result As Int)
    If Result = DialogResponse.POSITIVE Then
        btnEnr_Click
    End If
    Activity.Finish
End Sub

Désolé, je n'avais pas testé le code que j'avais posté précédemment.
 

jojo12

Member
Licensed User
Finalement, il y a un petit hic.
La valeur de enregOK est toujours à False car maintenant, avec le nouveau code AutoCompleteEditText incorporé dans le ScrollView.panel, il semblerait que les modifications apportées dans AutoCompleteEditText ne détecte plus le changement effectué dans le texte.

Voici le Sub qui devrait être activé lors du changement de texte :

Sub AutoCompleteEditText1_TextChanged (Old As String, New As String)
If Main.origine2 = "RCOPY" Then enregOK = True
End Sub

J'ai mis un message dans ce code et il ne passe plus ici. Il ignore le TextChanged dans AutoCompletetEditText, alors qu'avant cela fonctionnait.
 

jojo12

Member
Licensed User
Voilà un programme : une layout avec : Scrollview et Autocomplete inclus dans le panel Scrollview
et sur la même layout dans la deuxième moitié, un Autocomplete sans scroll.
Dans le premier cas le textchanged n'est pas détecté
Dans le deuxième, il l'est.
 

Attachments

  • keyback.zip
    462.6 KB · Views: 5

klaus

Expert
Licensed User
Longtime User
C'est normal que l'évènement TextChanged ne fonctionne pas !
Dans la ligne ci dessous tu n'as pas spécifie le nom de l'évènement:
B4X:
AutoCompleteEditText2.Initialize("")
Si tu la modifies comme ci-dessous, cela fonctionne !
B4X:
AutoCompleteEditText2.Initialize("AutoCompleteEditText2")
En voyant le code complet c'est beaucoup plus facile d'aider, car les erreurs sont souvent ailleurs que où le demandeur pense.
Raison pour laquelle je demande, et d'autres aussi, de fournir le projet ou un petit projet montrant le problème.

As-tu essayé la CustumView avec AutoCompleteEditText que je t'avais envoyé ?
 

jojo12

Member
Licensed User
Cela marche impec !
Pour AutoCompleteEditText, il faut que je regarde pourquoi il m'affiche la layout et m'indique aussitôt que l'application s'arrête systématiquement.
 
Top