EmailOuvreSessionSMTP("comptesms", "localhost") // depuis votre hébergement
// Compte autorisé à envoyer
Email.Expéditeur = "xxxxsms@gmail.com"
Email.NbDestinataire = 1
// Numéro destinataire
noGSM est une chaîne = "+33683652208"
Email.Destinataire[1] = "sms:" + noGSM + "@kalanda.net"
// Message
Email.Message = "Test message"
// Envoi
SI PAS EmailEnvoieMessage("comptesms") ALORS
Info(ErreurInfo(errComplet))
SINON
Info("Envoi Ok")
FIN
EmailFermeSession("comptesms")
Archives par catégorie : Windev
PDF Toolkit
PDFtk
PDF Toolkit fonctionne en mode ligne de commande.
Etape 1 lister les champs
pdftk form.pdf dump_data_fields >champs.txt.txt
Etape 2 saisir le champs
Etape 3 créer un form.fdf ( fichier de remplissage) avec la structure suivante:
%FDF-1.2 1 0 obj<</FDF<< /Fields[ <</T(Nom)/V(Durand albert)>> <</T(Addresse)/V(12, rue du truc vert)>> <</T(CP)/V(33300)>> <</T(VILLE)/V(BORDEAUX)>> ] >> >> endobj trailer <</Root 1 0 R>> %%EOF
Etape 4 générer le pdf « flat »
pdftk form.pdf fill_form form.fdf output remplis.pdf flatten
Il est aussi possible d’avoir un fichier FDF si le nom du fichier PDF est inclus dans le fichier FDF
%FDF-1.2 1 0 obj<</FDF<< /Fields[ <</T(formulaire1[0].#subform[0].#subform[1].Nom[0])/V(Exemple)>> <</T(formulaire1[0].#subform[0].#subform[1].prenom[0])/V(Félix)>> <</T(formulaire1[0].#subform[0].#subform[1].rue[0])/V(Rue de la Gare 8)>> <</T(formulaire1[0].#subform[0].#subform[1].postal[0])/V(75000)>> <</T(formulaire1[0].#subform[0].#subform[1].localite[0])/V(Paris)>> ] /F (c:/temp/Mon_Fichier_PDF.pdf)>> >> endobj trailer <</Root 1 0 R>> %%EOF
Windev : forcer le clavier en Caps Lock
EnvoieTouche("{VERRMAJ}")
Insertion d’une table dans une fenêtre
Table dans une fenêtre – ChargeDonations
PROCEDURE ChargeDonations() TABLE_Donations..TotauxActif=Faux SI PAS HExécuteRequête(REQ_DonationsAlbum,hModifieFichier,SAI_ID) ALORS Erreur(ErreurInfo(errComplet)) RETOUR FIN TableAffiche(TABLE_Donations) TABLE_Donations..TotauxActif=Vrai
Table dans une fenêtre – SauveDonations
PROCEDURE SauveDonations() TABLE_Donations..TotauxActif=Faux POUR TOUTE LIGNE DE TABLE_Donations TABLE_Donations.COL_IDAlbums=SAI_ID TableEnregistre(TABLE_Donations) FIN TABLE_Donations..TotauxActif=Vrai
Paramètres de la TABLE_Donations : table chargée en mémoire
Générer des Pdfs depuis Excel
Pour générer directement des PDFs à partir de Excel.
SI fFichierExiste(fRepExe()+"\"+"MacroSpecialisee.xlsm") ALORS MonExcel est un objet Automation dynamique MonExcel = ObjetActif("Excel.Application") // Si un Excel est déjà lancé, on va le récupérer SI MonExcel = Null ALORS // Aucun Excel n'est déjà lancé : on en lance un MonExcel = allouer un objet Automation "Excel.Application" SI MonExcel = Null ALORS Erreur("Impossible de lancer Excel") RETOUR FIN FIN SI MonExcel <> Null ALORS // Pilotage d'Excel //rend la feuille visible pour débugage sinon ça tourne en arrière plan MonExcel>>Visible = Vrai MonExcel>>Workbooks>>open(fRepExe()+"\"+"MacroSpecialisee.xlsm") // Lancer la macro particulière avec paramètres éventuels MonExcel>>run(“NomDeMaMacro_Dans_MacroSpecialisee”, sParametre1) MonExcel>>quit // On libère l'objet Excel utilisé libérer MonExcel FIN SINON Erreur("Impossible de générer automatiquement le fichier XLS et PDF concerné. Macro 'MacroSpecialisee.xlsm' non trouvée.", "Faites le manuellement si nécessaire.") FIN
Select … in
Selectionner les articles dont le statut est A,S ou T
Select * from Article where Statut in ('A';'S';'T')
En Windev SQL, le séparateur doit être ; ou Tab ou RC
Afficher une information liée à une ligne de table
A placer dans l’évènement Survol de la table
LOCAL nLigne,nColonne est un entier nLigne = TableInfoXY(TABLE, tiNumLigne, SourisPosX(), SourisPosY()) nColonne = TableInfoXY(TABLE, tiNumColonne, SourisPosX(), SourisPosY()) SI nColonne=3 AND nLigne <> -1 ALORS HLitRecherchepremier(Clients,IDClients,TABLE.COL_IDClients[nLigne]) TABLE.COL_Date..Bulle=Clients.Title1+[" "]+Clients.Name1)+RC +Clients.Title2+[" "]+Clients.Name2)+RC+Clients.Address1+RC+Clients.Address2+RC+Clients.ZipCode+" "+Clients.City FIN
Récupérer des info via une URL
Code_monnaie est une chaine= "USD" Lib_cours est une chaine SI HTTPRequête("http://www.lennart-moltrecht.com/apps/currencyapi/calculator.php?original=" ... +Code_Monnaie+"&target=EUR&value=1") ALORS LIB_Cours = HTTPDonneRésultat(httpRésultat) SINON Erreur(ErreurInfo()) FIN Crédit : christian.saout@sparex.fr
Récupérer les messages sur un serveur Mail
SessionImap est une Email SessionImap tabMessage est un tableau de Emails SessionIMAP.AdresseServeur = Compte.IMAPServeur SessionIMAP.Port = Compte.IMAPPort SessionIMAP.Nom = Compte.IMAPUtilisateur SessionIMAP.MotDePasse = gfDécrypte(Compte.IMAPPassword) SessionIMAP.Option = Compte.IMAPConnexion = OPTION_SSL ? optionSSL SINON EmailOptionDéfaut SI PAS EmailOuvreSession(SessionIMAP) ALORS RENVOYER Faux FIN // Récupération de tous les messages tabMessage = EmailRécupèreTout(SessionIMAP,ertComplet) // Parcours du tableau des messages avec une boucle POUR TOUT POUR TOUT UnMessage DE tabMessage Info(UnMessage..Message, UnMessage..Source) FIN EmailFermeSession(SessionIMAP)
Convertir un fichier Csv Utf8 vers Ansi
sFichier,sConteneur,sLigne,sTexte sont des chaînes x est un entier // Ouvre le sélecteur de fichiers sFichier = fSélecteur("", "", "Sélectionnez un fichier...", "Csv" + TAB + "*.csv", "*.csv") sConteneur=fChargeTexte(sFichier) sConteneur =UTF8VersChaîne(sConteneur,alphabetAnsi) POUR TOUTE CHAINE sLigne DE sConteneur SEPAREE PAR RC TableAjoute(Table1) TableSelectPlus(Table1,TableOccurrence(Table1)) x = 0 POUR TOUTE CHAINE sTexte DE sLigne SEPAREE PAR ";" x += 1 SI x <= 4 // Prendre les 4 premières colonnes {"TABLE1.COL_Colonne"+x,indChamp}=sTexte FIN FIN FIN