Communauté Informatique NDFR.net

Communauté Informatique NDFR.net (http://www.ndfr.net/forums/index.php)
-   Programmation (C/C++, Delphi, VB, etc.) (http://www.ndfr.net/forums/forumdisplay.php?f=64)
-   -   Visual Basic et annuler une action (http://www.ndfr.net/forums/showthread.php?t=4864)

ThOMaZ2118 18-08-2004 14:57

Visual Basic et annuler une action
 
Salut,

Je suis en train de faire un form oui il y a des textboxes a remplir mais qui ne sont pas facultatifs.
Je voudrais quand j'essaye de fermer la fenetre qu'il me dise que je dois remplis les cases.
Voici le code:
Code:

Private Sub Form_Unload(Cancel As Integer)
If a = 1 Then
    If txtName.Text = "" Then
        MsgBox ("All boxes have to be filled before you exit so the person is added")
    End If
End If
End Sub

Quand je ferme la fenetre il me donne bien le message box mais quand je fait OK il la ferme quand meme.
J'essaye de trouver un moyen pour qu'il ne la ferme pas quand je clic sur la croix et que la valeur de a est sur 1.

J'éspère que c'est clair :confused:

merci :)

Cougar 18-08-2004 15:08

Jme souviens plus très bien de la syntaxe en VB, mais faudrait (c'est une des possibilités en tout cas) recharger le Form pour revenir à la "saisie du texte".
Un truc du genre form1.load ou quoi (mais doit y avoir des subtilités si y a plusieurs zone de saisies et qu'on ne veut pas tout effacer).

sinon jviens d'y penser là :)

Code:

Private Sub Form_Unload(Cancel As Integer)
Loop
If a = 1 Then
        If txtName.Text = "" Then
                MsgBox ("All boxes have to be filled before you exit so the person is added")
        End If
while txtname.text <> ""
 
End If
End Sub

enfin la syntaxe est ptet pas bonne, tu peux faire ça avec un return, ou un autre if imbriqué, etc etc

ThOMaZ2118 18-08-2004 15:49

Si je me rapelle bine il s'agit de form.show mais quand on lui dit sur le exit qu'il doit ouvrir le form que l'ont viens de fermer, il ne le rouvre pas.

T'a solution ne m'a pas l'air mauvaise mais ca ne le fera que pour le premier textbox, si la personne commence par remplir la derniere case il ne pouras pas car il demanderas toujours de remplir la premiere.

Mais j'ai trouver une autre solution qui a a voir avec la base de donnees et je ne vais pas commencé a expliquer en detail mon devoir.

Merci pour l'aide, ca me sera utile :)

cameleon69 18-08-2004 16:47

Pour que la méthode unload ne s'applique pas il faut mettre le code suivant

Code:

Cancel = 0 ou 1
Je ne sais plus si c'est 1 ou 0
Mais cela bloquera la méthode. ;)

Cougar 18-08-2004 19:37

Quote:

Originally Posted by ThOMaZ2118
T'a solution ne m'a pas l'air mauvaise mais ca ne le fera que pour le premier textbox, si la personne commence par remplir la derniere case il ne pouras pas car il demanderas toujours de remplir la premiere.

bah tu rajoutes d'autres conditions textbox <> "" and blablabla, comme c'est une petite app y a pas besoin d'écrire 2000 lignes de codes ;)

cameleon69 18-08-2004 20:01

Je pense que tu dois pouvoir faire une boucle while en testant si le control est un textbox et à ce moment la tester s'il est vide ou pas.

Magi-X 18-08-2004 20:17

ben normalement il suffit de faire un "exit sub" ou quelque chose du genre, question qu'il ne termine pas le sub et il ne le fermera pas alors ... me souvien avoir utiliser ca dans un de mes script ;)

pour plus d'info thomas tu sais comment me joindre ;)

cameleon69 19-08-2004 12:20

Bon je viens vite fait de faire un test chez moi.

Voici le genre de code que tu dois mettre pour tester si tous les controles TEXTBOX sont bien différents de vide.
Code:


Private Sub Form_Unload(Cancel As Integer)
Dim ctrl As Control
For Each ctrl In Me.Controls
        'je recherche que les controles de type Textbox
        If TypeOf ctrl Is TextBox Then
                'si le controle est vide alors je sors de la boucle
                'et j'empeche la fermeture de la form
                If ctrl.Text = "" Then
                        Cancel = 1
                        'message informant d'une erreur
                        MsgBox "Vous devez remplir tous les champs obligatoires.",,"Erreur de saisie"
                        Exit For               
                End if
        End If
Next ctrl
End Sub

Voila qui devrait répondre à ta demande.
Cette méthode teste tous les controles de la form et si c'est une textbox elle vérifie que la textbox n'est pas vide, si tel est le cas à la première rencontrée elle sort de la boucle et ne ferme pas la fenêtre.
Bien entendu tu peux mettre un message à l'aide d'une msgbox avant le Exit For. ;)


All times are GMT +2. The time now is 17:45.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.