Accueil > FAQ FAQ
Bienvenue dans la FAQ Dans cet espace, vous trouverez les réponses aux questions fréquemment posées, ainsi que les réponses à 'Comment je fais' et les questions 'Le saviez-vous'. Merci de nous faire part de vos commentaires sur ces Q&R.
Concernant vos proposition de Q&R, nous vous invitons à nous les soumettre par les formulaires de contact en spécifiant la question et la réponse à publier.

Merci de ne pas confondre FAQ et Forum. La première étant un extrait du second. Préférez alors les forums pour poser les questions sans réponses.

 Liste des catégories
Voici la liste des principales catégories et de leurs sous-catégories. Choisissez une catégorie pour voir les Q&R.
Catégorie Q&R Dernières Q&R publiées
 WinDev API
Q/R relatives à l'utilisation des API Windows avec WinDev.
22 Savez vous comment programmer une fonction Wake On Lan avec windev ?
 WinDev Codes
Q/R relatives au wLanguage et à la codification WinDev.
39 Comment récupérer la liste des sous répertoires en une seule ligne
 WinDev Codes HF
Q/R relatives aux ordres HyperFile du wLangage.
7 Comment affecter, modifier et supprimer le contenu d'un champ mémo bimair...
 WinDev Etats
Q/R relatives aux états WinDev et à WDEtat Utilisateurs
3 Appliquer les modifications iParametre() pour changer de bac
 WinDev Fenêtres
Q/R relatives aux fenêtres WinDev, à leur gestion et à leur contenus.
12 Dans un superchamp, mes sous-champs ne sont pas disponible en saisie alors qu&#...
 WinDev Projets
Q/R relatives aux projets WinDev.
3 Connaitre le répertoire des données en installation réseau
 WinDev Divers
Q/R sur les autres sujets WinDev.
10 Comment Renseigner la propriété RecordSelectionFormula de crystal report XI a...
 WinDev Gabarits/Design
Q/R relatives au design et aux gabarits WinDev
1 Magenta des bmp et boutons
 Le saviez-vous ?
Memoires sur les fonctions et utilisations de WinDev
12 Comment contrôler ou non la structure à l'ouverture d'un fichier Hy...

 Dernières Q&R publiées
Ici, la liste des dernières Q&R publiées.
Demandé et répondu par Drcharly93 le 24-Jun-2007 01:07 (1748 Lectures)
Comment modifier la taille de fenêtre sans que les champs ne se
déplacent
Lorsque des ancrages sont définis sur les champs d'une fenêtre, lors de la
modification de taille de la fenêtre sous l'éditeur, les champs se déplacent
automatiquement.

Si vous souhaitez modifier la taille de fenêtre sans que les champs ne se
déplacent, il suffit de maintenir la touche SHIFT enfoncée pendant le
déplacement.

  Imprimer la Q&R Envoyer la Q&R

Demandé et répondu par Drcharly93 le 15-Jun-2007 15:40 (4425 Lectures)
Comment bloquer le clavier ou la souris
gnHandleHook étant une variable global de la fenetre
code de declaration de la fenetre
gnHandleHook est un entier


Code clic commence blocage clavier
gnHandleHook = API("user32","SetWindowsHookExA",13,&Procédure_Hook, Instance() ,0) 


Creer une procedure globale
PROCEDURE Procédure_Hook(ncode, wParam, lParam) 
RENVOYER -1


code du clic termine blocage clavier
 
SI PAS API("user32","UnhookWindowsHookEx",gnHandleHook) ALORS
	Erreur("erreur ")
FIN


Pour bloquer la souris il suffit de remplacer 13 par 14


Demandé et répondu par Drcharly93 le 13-Jun-2007 15:13 (4159 Lectures)
Comment convertir un texte à la norme iso 89_50 ?
Suite à poste de Robert BuathierFabien sur ce sujet je retranscrit la réponse faite par COULLOMB sur news.pcsoft

PROCEDURE ConvertirVersISO89_50(text)

texteàconvertir est une chaîne = text
texteàconvertir = Remplace(texteàconvertir,"%","%25")
texteàconvertir = Remplace(texteàconvertir,"+","%2B")
texteàconvertir = Remplace(texteàconvertir," ","+")
texteàconvertir = Remplace(texteàconvertir,RC,"%0A")
texteàconvertir = Remplace(texteàconvertir,"$","%24")
texteàconvertir = Remplace(texteàconvertir,"&","%26")
texteàconvertir = Remplace(texteàconvertir,"'","%27")
texteàconvertir = Remplace(texteàconvertir,"(","%28")
texteàconvertir = Remplace(texteàconvertir,")","%29")
texteàconvertir = Remplace(texteàconvertir,",","%2C")
texteàconvertir = Remplace(texteàconvertir,"/","%2F")
texteàconvertir = Remplace(texteàconvertir,":","%3A")
texteàconvertir = Remplace(texteàconvertir,";","%3B")
texteàconvertir = Remplace(texteàconvertir,"<","%3C")
texteàconvertir = Remplace(texteàconvertir,"=","%3D")
texteàconvertir = Remplace(texteàconvertir,">","%3E")
texteàconvertir = Remplace(texteàconvertir,"?","%3F")
texteàconvertir = Remplace(texteàconvertir,"@","%40")
texteàconvertir = Remplace(texteàconvertir,"é","%E9")
texteàconvertir = Remplace(texteàconvertir,"è","%E8")
texteàconvertir = Remplace(texteàconvertir,"ù","%F9")

RENVOYER texteàconvertir


Demandé et répondu par Drcharly93 le 03-May-2007 19:00 (5357 Lectures)
Comment lister tous les ports séries
Ce code à été récupéré sur le forum de PCSoft.
PROCEDURE enumPortCOM()

port2 est composé de
	pPortName 		est un entier
	pMonitorName 	est un entier
	pDescription 	est un entier
	fPortType 		est un entier
	Reserved 		est un entier
FIN

cbBuff 				est un entier
pbNeeded 			est un entier
pcReturned 			est un entier
szListePortCOM 		est une chaîne

AppelDLL32("winspool.drv","EnumPortsA",Null,2,Null,cbBuff,&pbNeeded,&pcReturned)

hmem est un entier = AppelDLL32("kernel32","GlobalAlloc",0x40,pbNeeded)

cbBuff = pbNeeded

AppelDLL32("winspool.drv","EnumPortsA",Null,2,hmem,cbBuff,&pbNeeded,&pcReturned)

ind est un entier
port est une chaîne ASCIIZ sur 64
ch est une chaîne

adr est un entier = hmem

POUR ind = 1 A pcReturned
	AppelDLL32("kernel32","RtlMoveMemory",&port2,adr,20)
	AppelDLL32("kernel32","RtlZeroMemory",&port,64)
	AppelDLL32("kernel32","RtlMoveMemory",&port,port2.pPortName,64)
	ch = port

	//	AppelDLL32("kernel32","RtlZeroMemory",&port,64)
	//	AppelDLL32("kernel32","RtlMoveMemory",&port,port2.pMonitorName,64)
	//	ch += port + " - "
	//
	//	AppelDLL32("kernel32","RtlZeroMemory",&port,64)
	//	AppelDLL32("kernel32","RtlMoveMemory",&port,port2.pDescription,64)
	//	ch += port + " - "
	SI ch[[A 3]] = "COM" ALORS
		szListePortCOM += Gauche(ch,4) + RC
	FIN

	adr += 20
FIN
AppelDLL32("kernel32","GlobalFree",hmem)

RENVOYER szListePortCOM


Demandé et répondu par Floman321 le 23-Apr-2007 16:56 (4019 Lectures)
Comment changer l'image de fond d'un répertoire par programmation très simplement
Windows permet de changer l'image de fond d'un dossier en créant
via WinDev un fichier 'Desktop.ini' qui contiendra les paramètres nécessaires.

PROCEDURE Modifier_fonddossier(chemin_dossier,chemin_img est chaîne)

// on creer un fichier desktop.ini qui permet de personnaliser l'affichage du dossier
idfichier est un entier = fOuvre(chemin_dossier+"\desktop.ini",foCréationSiInexistant+foCréation)

// on lui met les paramètres voulu 
SI idfichier > 0 ALORS
fEcritLigne(idfichier,"[{BE098140-A513-11D0-A3A4-00C04FD706EC}]")
fEcritLigne(idfichier,"Attributes=1")
fEcritLigne(idfichier,"IconArea_Image="+chemin_img)

fFerme(idfichier)

// on met le fichier en mode caché
fAttribut("D:\Mes Projets\Dragmail\Exe\mails\desktop.ini","H")

// on met le repertoire en mode system
fRepAttribut("D:\Mes Projets\Dragmail\Exe\mails","S")


Demandé et répondu par Drcharly93 le 02-Apr-2007 15:15 (5424 Lectures)
Comment scroller un ascenseur horizontal dans une table par programmation ?
Le principe est d’envoyer un message à Windows concernant l’ascenseur :
//WM_HSCROLL est la constante Windows qui gére les ascenseurs
WM_HSCROLL est un entier   = 0x0114
ehandle est un entier
eNumMessage est un entier 
//Envoi du message
ehandle = Handle(Table)
eNumMessage = 7 
SendMessage(ehandle,WM_HSCROLL,eNumMessage,0)

//Voici les différentes valeurs que eNumMessage peut prendre pour WM_HSCROLL (horizontal) et WM_VSCROLL (vertical)
//SB_LINEUP           0
//SB_LINELEFT         0
//SB_LINEDOWN         1
//SB_LINERIGHT        1
//SB_PAGEUP           2
//SB_PAGELEFT         2
//SB_PAGEDOWN         3
//SB_PAGERIGHT        3
//SB_THUMBPOSITION    4
//SB_THUMBTRACK       5
//SB_TOP              6
//SB_LEFT             6
//SB_BOTTOM           7
//SB_RIGHT            7
//SB_ENDSCROLL        8


Origine de la source :
CodeWinDev.com.free.fr


Demandé et répondu par Drcharly93 le 02-Apr-2007 14:17 (5000 Lectures)
Comment faire communiquer WinDev et Flash ?
Dans le logiciel de création Flash utiliser la fonction FScommand(command,args) afin de communiquer vers Windev à travers l'activex "shockwave flash object".

Sur la dernière image de l'animation flash entrer :

stop();
fscommand("stop","fin");//valeur de command et args pour exemple

Puis exporter l'animation au format "swf" bien entendu(V7 pour cet exemple).

Dans Webdev entrer les lignes suivantes :
PROCEDURE AffichInfo(etat,valeur) 
Trace(etat+valeur)

// animation à charger
intro>>movie=fRepEnCours()+"\flash\intro.swf"

ActiveXEvénement("AffichInfo", intro, "FSCommand")

Résultat : Lorsque le lecteur flash lit la dernière image de son animation, les valeurs "stop" et "fin" sont bien intercepté.

Il me reste à tester dans l'autre sens (Webdev vers activex flash)

Si cela peut servir à d'autre et leur éviter du temps de recherche.

Stéphane Sch.


Demandé et répondu par R&B le 03-Mar-2006 11:42 (21758 Lectures)
Comment mesurer l'inactivité d'un utilisateur ?
Remerciement à Marc pour sa trouvaille.

Il peut être utile de déclancher un traitement si l'utilisateur n'a pas effectué dopération pendant un certain temps. Pour cela on va mesurer le temps écoulé depuis sa dernier action.

L'API "GetLastInputInfo" dans user32.dll est utile pour cela.
LASTINPUTINFO est une structure
  cbTaille est un entier sans signe sur 4
  dwTime est un entier
FIN

MesInformations est un LASTINPUTINFO
MesInformations:cbTaille = Dimension(MesInformations)
SI  API("user32","GetLastInputInfo",&MesInformations) <> 0 ALORS
   Info("L'utilisateur n'a pas eu d'activité sur le poste depuis " + MesInformations:dwTime + "Ms")
FIN


Demandé et répondu par R&B le 30-Nov-2005 08:37 (5065 Lectures)
Comment obtenir la liste des répertoires d'un répertoire ?
// Les fichiers présents dans le répertoire courant
// sont affichés dans la liste "ListeFichiers"
ResFichier = fRep(completeRep(fRepEnCours())+"*.*", frRepertoire)
TANTQUE ResFichier <> ""
   ListeAjoute(ListeFichiers, ResFichier)
   ResFichier = fRep("", frFichier)
FIN


Demandé et répondu par Drcharly93 le 10-Nov-2005 23:16 (4488 Lectures)
Comment convertir une valeur Hexadécimal en réel 32 bits
str4 est une structure
octet4 est un entier sans signe sur 1 octet
octet3 est un entier sans signe sur 1 octet
octet2 est un entier sans signe sur 1 octet
octet1 est un entier sans signe sur 1 octet
FIN

R est un réel sur 4 octets

vstr4 est un str4

vstr4:octet4 = 0x00
vstr4:octet3 = 0x00
vstr4:octet2 = 0xE8
vstr4:octet1 = 0x41

Transfer(&R, &vstr4, 4)

Info(R, "CQFD") // Affiche 29

Merci à Patrick Biker


Demandé et répondu par Totof le 04-Nov-2005 10:58 (5055 Lectures)
Comment éviter qu'un Thread soit bloqué par un appel à Info(), erreur() ou autres ?<br />
Dans l'aide windev il est indiqué :

Citation :
...
Les appels aux fonctions Info , Erreur , ... bloquent tous les threads en cours d'exécution.
...


OUI, mais il existe une solution pour éviter qu'ils ne soient bloqués.
- Allez dans Projet -> Description du projet -> Style
- Cochez la case : Appliquer le thème de gabarit sur les fenêtres d'informations système

A partir de maintenant, plus rien ne bloquera l'exécution de vos threads

bon threads,

Totof


Demandé et répondu par R&B le 14-Oct-2005 11:44 (5891 Lectures)
Comment télécharger un fichier Zip disponible sur Internet ?
Merci à PopCorn pour la trouvaille.

Voici le code pour télécharger : http://www.monsite.com/fichier.zip

// Définition des variables
ResAppel est un booléen
IdFichier est un entier

// Ouverture du fichier 
IdFichier = fOuvre("C:\test.zip", foCréation )
SI IdFichier <> -1 ALORS
	// Récupération du fichier zip
	ResAppel= HTTPRequête("http://www.monsite.com/fichier.zip")
	SI ResAppel = Vrai ALORS
		// Enregistrement du fichier zip
		fEcrit(IdFichier, HTTPDonneRésultat (), Taille( HTTPDonneRésultat ()))
	FIN
	// Fermeture du fichier
	fFerme(IdFichier)
FIN


Demandé et répondu par R&B le 19-Jul-2005 22:55 (4000 Lectures)
POO : Comment manipuler l'instance en cours d'une classe dans celle-ci ?
Utiliser le mot-clé Objet
Voici donc enfin l'équivalent du This connu par ailleur.
Une classe peut donc retourner sont instance par une simple méthode :
PROCEDURE This()
RENVOYER objet

Idéal pour dupliquer les instances. Les membres privées sont bien copiés dans le nouvel objet et si l'un des membres publiques ou privées du premier objet sont modifiés ils ne le sont pas dans le deuxième.

On a donc bien une copie de l'instance dans une nouvelle instance et non deux intances qui pointent sur le meme objet.


Demandé et répondu par R&B le 12-Jul-2005 17:29 (5193 Lectures)
Comment affecter, modifier et supprimer le contenu d'un champ mémo bimaire ?
Les fichiers attachés aux mémos binaires sont une surcouche de la gestion des rubrique. Ainsi, les fonction EcranVersFichier() et FichierVersEcran() sont à compléter avec respectivement par HAttacheMemo() et hExtraitMemo().

La suppression du contenu d'un mémo binaire est assurée par l'attachement d'une chaine vide (à la place du chemin de fichier).


Demandé et répondu par PopCorn le 11-Jul-2005 10:30 (5998 Lectures)
Comment générer du code HTML dans windev avec un éditeur WYSIWYG intégré dans mon application ?
Il vous suffit de télécharger un activeX gratuit : http://www.xstandard.com. Cet activeX génère du code compatible W3C.

Attention : lors de l'utilisation de cet activeX, la fonction "fRepEnCours()" ne doit plus être utilisé. En effet, cet activeX modifie le path de l'application en cours dans Windows.

Utiliser plutôt la fonction "exeInfo()" pour récupérer le répertoire en cours de l'application


Demandé et répondu par R&B le 15-Jun-2005 09:12 (4217 Lectures)
Comment bloquer le raffraîchissement d'une fenêtre ?
Il faut passer par l'API LockWindowUpdate de USER32
En passant le Handle de la fenêtre à bloquer et en ne passant pas de paramètre pour réactiver le raffaîchissement.

PROCEDURE BloqueRafraichissement(P_Handle=Null)
AppelDLL32("USER32","LockWindowUpdate",P_Handle)


Cela peut être utile pour masquer des manipulations d'affichage tels que le remplissage ou le parcours de tables, etc.

Remerciement à Mickael.


Demandé et répondu par R&B le 14-Jun-2005 13:08 (4197 Lectures)
Je voudrais installer windev mais la clé physique n'est pas reconnue sur mon portable. Comment faire ?
Aller sur le le site de Aladdin (http://www.aladdin.com/) et télécharger les derniers pilotes pour la clé USB. Utiliser les pilotes pour HASP HL.
http://www.aladdin.com/support/hasp/vendor.asp


Demandé et répondu par Sogestion le 13-Jun-2005 08:02 (4008 Lectures)
Comment faire pour insérer, sous l'éditeur de code, une chaine en y intégrant les sauts de ligne ?
L'éditeur de code autorise l'utilisation des crochets [ ... ] pour encapluser une chaine dans le code comme dans l'exemple suivant concernant le texte de la requête :
SELON nType
CAS 6 : sIDCpte = "( '61', '62', '63', '64', '65', '66', '67', '68', '69' ) "
CAS 7 : sIDCpte = "( '70', '71', '72', '73', '74', '75' ) "
FIN

// [< Code requête >]
sReqSQL = [
SELECT SUM ( TotDébit ) AS TotalDébit , SUM ( TotCrédit ) AS TotalCrédit
FROM BalCompte
WHERE Exercice = '%1'
AND BalCompte.IDCompte IN %2
]

// [< Construire requête >]
sReqSQL = ChaîneConstruit(sreqSQL, sExerc, sIDCpte)

SI PAS HExécuteRequêteSQL(SrcReq, sReqSQL) ALORS



Demandé et répondu par R&B le 03-Jun-2005 13:29 (4626 Lectures)
Comment déclarer une police Windows.
Par Mathieu Kurth :

Après avoir copié le fichier "C:\Windows\Fonts" lancer le code suivant pour déclarer la police.

strPath est une chaîne = fSélecteur("", "", "Sélectionnez un fichier...", 
"Tous fichiers (*.*)"+TAB+"*.*", "*.*", fselOuvre+fselExiste)
SI strPath <> "" ALORS
   strPath += Caract(0)
   API("Gdi32","AddFontResourceA",&strPath)
FIN


Demandé et répondu par Ramses le 27-May-2005 12:49 (3653 Lectures)
Ecrire une valeur binaire dans le registre
Oups, je suis en forme aujourd'hui, allez après lire une valeur binaire, voici commment écrire une donnée en mode binaire dans le registre :


// Vars
hKey is int
lpcbData is int
ulOptions is int
ulOptions1 is int
ulOptions2 is int
lsData is string

// Read option
ulOptions1=BinaryOR(0x00020000, 0x0001)
ulOptions1=BinaryOR(ulOptions1, 0x0008)
ulOptions1=BinaryOR(ulOptions1, 0x0010)
ulOptions1=BinaryAND(ulOptions1, BinaryNOT(0x00100000))

// Write option
ulOptions2=BinaryOR(0x00020000, 0x0002)
ulOptions2=BinaryOR(ulOptions2, 0x0004)
ulOptions2=BinaryAND(ulOptions2, BinaryNOT(0x00100000))

// Open key ( 0x80000001 --> HKEY_CURRENT_USER\ )
// With subkey Software\MyOtherSubKey
IF API("ADVAPI32.DLL","RegOpenKeyExA", 0x80000001, "Software\MyOtherSubKey", 0, OUBinaire(ulOptions1, ulOptions2), &hKey)<>0 THEN
	Error(ErrorInfo())
	RETURN
END

// What we want to store
lsData="Bonjour,"+RC+RC+"My Name Is Bond, James Bond"

// Set binary data
IF API("ADVAPI32.DLL","RegSetValueExA", hKey, "MyValueName", Null, "binary", lsData, Taille(lsData))<>0 THEN
	API("ADVAPI32.DLL","RegCloseKey",hKey)
	Error(ErrorInfo())
	RETURN
END

// Close opened key
API("ADVAPI32.DLL","RegCloseKey",hKey)




Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2