Page 1 sur 1
[R] Ajout d'un bouton parcourrir
Posté : mer. 15 mai 2013 17:03
par cbourdu57
Bonjour
Je fais appel a vous car j'ai un petit problème ...
J'ai créer une interface qui permet d'envoyer un mail par rapport a ce que l'utilisateur entre comme donnée dans les input ...
Tout fonctionne sauf quand l'utilisateur entre n'importe quoi dans le input des pièces jointes et qu'il click sur envoyer ...
Je voudrais donc vérifier le input pour les pièces jointes avant qu'il envoie le message, pour pas qu'il n'y est d'erreur ...
Donc soit faire une vérification avant qu'il envoie
Soit permettre de parcourir les fichiers :
Voici mon code
Code : Tout sélectionner
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Btn_envoyer
const $olMailItem=0
$oOApp = ObjCreate("Outlook.Application")
$oOMail = $oOApp.CreateItem($olMailItem)
$oOMail.Save
With $oOMail
.To = GUICtrlRead($Input_dest)
.Subject = GUICtrlRead($Input_sujet)
.Body = GUICtrlRead($Input_corps)
.attachments.add (GUICtrlRead($Input_pieces))
.Display
EndWith
.....................
EndSwitch
Wend
Merci

Re: Ajout d'un bouton parcourrir
Posté : mer. 15 mai 2013 17:30
par jguinch
Salut.
La fonction que tu recherches est certainement
FileOpenDialog.
En général, voilà comment je procède :
► Afficher le texteexemple
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
GUICreate("", 200, 70)
$input = GUICtrlCreateInput("", 10, 10, 150, 25)
$browse = GUICtrlCreateButton("...", 165, 10, 25, 25)
$ok = GUICtrlCreateButton("OK", 50, 40, 100, 25)
GUISetstate()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
If $msg = $browse Then
$file = FileOpenDialog("Choisir un fichier", @ScriptDir, "Tous les fichies (*.*)", 5 )
If $file <> "" Then GUICtrlSetData($input, $file)
EndIf
If $msg = $ok Then
$file = GUICtrlRead($input)
If FileExists($file) Then
MsgBox(0, "OK", "C'est bon")
#CS
suite du code ....
#CE
Else
MsgBox(16, "Erreur", "Le fichier " & $file & " n'existe pas")
EndIf
EndIf
WEnd
Re: [..] Ajout d'un bouton parcourrir
Posté : jeu. 16 mai 2013 10:12
par cbourdu57
Ouaaaa merci beaucoup ! Le code fonctionne nickel !
Il y avait juste un petit bug, quand tu ne m'étais rien dans pièces jointes il entrait dans le else et donc il afficher Erreur le fichier "..." n'existe pas
Donc pour ne pas obliger l'utilisateur a entrer quelque chose , il faut juste changer le if
Code : Tout sélectionner
If FileExists($file) or $file="" Then
MsgBox(0, "OK", "C'est bon")
$olMailItem=0
$oOApp = ObjCreate("Outlook.Application")
$oOMail = $oOApp.CreateItem($olMailItem)
$oOMail.Save
With $oOMail
.To = GUICtrlRead($Input_dest)
.Subject = GUICtrlRead($Input_sujet)
.Body = GUICtrlRead($Input_corps)
if $file<>"" then
.attachments.add (GUICtrlRead($Input_pieces))
EndIf
;.Display
.Send
EndWith
Else
MsgBox(16, "Erreur", "Le fichier " & $file & " n'existe pas")
EndIf
Voilà pour ceux qui veulent une correction
En tout cas merci de ton aide !
J'aurai juste encore quelques questions , peut etre tu sais ...
Est il possible de mettre un texte de fond dans le input (genre : xxx@xxx.com)? car tu peux mettre un texte dans un input mais l'utilisateur fainéant doit toujours le supprimé avant d'écrire son adresse de destinataire
Est il possible d'obliger l'utilisateur, ou vérifier que l'utilisateur a bien entrer une adresse de type xxx@xxx.com ou .fr .de (et puis les autres xD je les connait pas) ?
Est il possible de rajouter au dessus du input la police, le style, les émoticones ... ?
Re: [..] Ajout d'un bouton parcourrir
Posté : jeu. 16 mai 2013 14:46
par mikell
1- Oui mais c'est pas top, vaudrait mieux mettre '
xxx@xxx.com' dans l'input et faire en sorte que ça s'efface au 1er clic sur l'input
2- Pour les adresses mail on peut vérifier que dans l'input l'entrée est bien de la forme '
machin@truc.ext'
Ce qui n'empêchera pas des petits malins d'écrire '
tagada@tsointsoin.zob' (comme tu peux le constater, le forum considère ça comme une adresse valide) mais a priori ceux-là n'ont rien à foutre dans ton programme
3- comprends pas
Re: [..] Ajout d'un bouton parcourrir
Posté : jeu. 16 mai 2013 16:17
par cbourdu57
1 et 2 : aurais tu des pistes à me donner, des fonctions à utiliser pour faire cela ?
( tu m'a fait rire avec ton tsointsoin !

)
3 : avec une image c'est plus simple :

- Capture2.PNG (2.88 Kio) Vu 2134 fois
Re: [..] Ajout d'un bouton parcourrir
Posté : jeu. 16 mai 2013 17:30
par mikell
1- Moins évident que ce que je pensais
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <Misc.au3>
Global $testinput = 0
GUICreate(" My GUI input", 320, 120)
$input = GUICtrlCreateInput("xxx@xxx.com", 20, 20, 200, 20)
$btn = GUICtrlCreateButton("Ok", 40, 75, 60, 20)
GUISetState()
While 1
If $testinput = 0 Then
If _IsPressed("01") Then
$a = GUIGetCursorInfo()
If $a[4] = $input Then
GuiCtrlSetData($input, "")
$testinput = 1
EndIf
EndIf
EndIf
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $btn
MsgBox(64, "", GUICtrlRead($input))
ExitLoop
EndSelect
WEnd
2 - vite fait :
► Afficher le texte
Code : Tout sélectionner
$string1 = "machin@truc.fr"
$string2 = "machinàtruc.fr"
$string3 = "machin.chose@truc-chouette.fr"
_TestMail($string1)
_TestMail($string2)
_TestMail($string3)
Func _TestMail($str)
If StringRegExp($str, '.+?@.{3,}\.\w{2,3}') Then
Msgbox(0,"", $str & @crlf & "est une adresse mail")
Else
Msgbox(0,"", $str & @crlf & "n'est PAS une adresse mail")
EndIf
EndFunc
3- si tu te lances dans ce genre de truc (en gros, refaire Word) alors vaut peut-être mieux oublier le script et prendre un freeware... sinon il y a la fonction _ChooseFont
Re: [..] Ajout d'un bouton parcourrir
Posté : ven. 17 mai 2013 09:13
par cbourdu57
Oui bon les 3 là c'était juste pour l'esthétique, donc je vais laisser tomber la 3ème
En tout cas merci beaucoup pour les informations
Je vais tester tout ça !
Re: [R] Ajout d'un bouton parcourrir
Posté : ven. 17 mai 2013 12:21
par cbourdu57
Je reviens vers toi car j'ai 2 petits soucis bizarre ...
Code : Tout sélectionner
Global $testinput = 0
While 1
; --------------------------------- Input email --------------------------------------
If $testinput = 0 Then
If _IsPressed("01") Then
$a = GUIGetCursorInfo()
If $a[4] = $Input_dest Then
GuiCtrlSetData($Input_dest, "")
$testinput = 1
EndIf
EndIf
EndIf
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
; -------------------------------------------- GESTION DES EMAILS ---------------------------------------------------------------------
Case $Btn_parcour_pieces
$file = FileOpenDialog("Choisir un fichier", @ScriptDir, "Tous les fichies (*.*)", 5 )
If $file <> "" Then GUICtrlSetData($Input_pieces, $file)
Case $Btn_envoyer
$file = GUICtrlRead($Input_pieces)
If Not (StringRegExp(GUICtrlRead($Input_dest), '.+?@.{3,}\.\w{2,4}')) Then
GuiCtrlSetData($Lbl_errdest, "Entrer une adresse mail valide !")
GuiCtrlSetData($Lbl_errpieces, "")
Else
GuiCtrlSetData($Lbl_errdest, "Adresse mail valide !")
If FileExists($file) or $file="" Then
GuiCtrlSetData($Lbl_errpieces, "Fichier valide !")
$olMailItem=0
$oOApp = ObjCreate("Outlook.Application")
$oOMail = $oOApp.CreateItem($olMailItem)
$oOMail.Save
With $oOMail
.To = GUICtrlRead($Input_dest)
.Subject = GUICtrlRead($Input_sujet)
.Body = GUICtrlRead($Input_corps)
if $file<>"" then .attachments.add (GUICtrlRead($Input_pieces))
.Display
;.Send
EndWith
Else
GuiCtrlSetData($Lbl_errpieces, "Ce fichier n'existe pas")
EndIf
EndIf
Case $Btn_efface_mail
GUICtrlSetData($Input_corps, "")
Case $Btn_effacetout
GUICtrlSetData($Input_dest, "nom@mail.com")
GUICtrlSetData($Input_sujet, "")
GUICtrlSetData($Input_pieces, "")
GUICtrlSetData($Input_corps, "")
EndSwitch
WEnd
Première erreur : Je n'arrive pas a clicker sur les boutons $Btn_efface_mail et $Btn_effacetout ... Trop bizarre ... (peut etre qu'il ne rentre pas dans les case ...)
Deuxième erreur (qui arrive que de temps en temps ...)
If $a[4]=$Input_dest Then
If $a^ ERROR
Error: Subscript used with non-Array variable
Re: [R] Ajout d'un bouton parcourrir
Posté : ven. 17 mai 2013 14:20
par mikell
Pour les boutons, faudrait voir avec le code de la gui
Pour l'autre erreur essaie
Re: [R] Ajout d'un bouton parcourrir
Posté : ven. 17 mai 2013 14:41
par cbourdu57
Je te passe le code pcke sinon ça va faire long sur le forum

et je ne vois plus d'erreur avec le $a pour l'instant

Re: [R] Ajout d'un bouton parcourrir
Posté : ven. 17 mai 2013 21:45
par mikell
Ecris le GUIGetCursorInfo avec le nom de la gui, de toute façon c'est plus propre
Pour les boutons je te donne un indice : $Lbl_errpieces

Re: [R] Ajout d'un bouton parcourrir
Posté : mar. 21 mai 2013 09:22
par cbourdu57

en gros j'ai mis le label trop grand ... et donc il se mettait au dessus des boutons ... J'ai honte

...
Mais bon l'erreur est humaine !
Merci en tout cas
