Accueil > FAQ | FAQ |
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.
Voici la liste des principales catégories et de leurs sous-catégories. Choisissez une catégorie pour voir les Q&R.
Ici, la liste des dernières Q&R publiées.
Demandé et répondu par Drcharly93 le 24-Jun-2007 01:07 (1778 Lectures)
Comment modifier la taille de fenêtre sans que les champs ne se
déplacent
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.
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.
Demandé et répondu par Drcharly93 le 15-Jun-2007 15:40 (4548 Lectures)
Comment bloquer le clavier ou la souris
gnHandleHook étant une variable global de la fenetre
code de declaration de la fenetre
Code clic commence blocage clavier
Creer une procedure globale
code du clic termine blocage clavier
Pour bloquer la souris il suffit de remplacer 13 par 14
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 (4230 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 (5418 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 (4065 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.
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 (5524 Lectures)
Comment scroller un ascenseur horizontal dans une table par programmation ?
Le principe est d’envoyer un message à Windows concernant l’ascenseur :
Origine de la source :
CodeWinDev.com.free.fr
//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 (5057 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 :
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.
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 (21833 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.
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 (5110 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 (4534 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
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 (5115 Lectures)
Comment éviter qu'un Thread soit bloqué par un appel à Info(), erreur() ou autres ?<br />
Dans l'aide windev il est indiqué :
Citation :
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
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 (5983 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
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 (4057 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 :
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.
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 (5267 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).
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 (6038 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
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 (4266 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.
Cela peut être utile pour masquer des manipulations d'affichage tels que le remplissage ou le parcours de tables, etc.
Remerciement à Mickael.
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 (4234 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
http://www.aladdin.com/support/hasp/vendor.asp
Demandé et répondu par Sogestion le 13-Jun-2005 08:02 (4062 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 (4672 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.
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 (3740 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)