FAQ WinDevConsultez toutes les FAQ
Nombre d'auteurs : 3, nombre de questions : 71, dernière mise à jour : 25 novembre 2018 Ajouter une question
Cette FAQ ne prétend pas traiter de tous les trucs & astuces ou de tous les problèmes rencontrés par les utilisateurs de WinDev : elle a été créée via l'analyse des questions les plus fréquentes posées sur le forum de ce site, et sur les connaissances des différents rédacteurs. Nous espérons voir le nombre de questions/réponses augmenter régulièrement, pour couvrir le plus de thèmes possibles. Pour y participer, suivez le mode d'emploi donné dans la 2ème question !
- Comment copier un Objet ?
- Appel du constructeur de la classe ancêtre depuis une classe dérivée
- Comment savoir si un objet dynamique est alloué ?
- Gérer l'indirection sur un onglet
- Comment utiliser une indirection comme propriété
- Comment ajouter un guillement dans une chaine ?
- Comment récupérer les arguments de la ligne de commande passée à l'exécutable ?
- Optimisation des boucles POUR
- Astuce sur l'instruction SELON
- Impression par page
- Faire une fonction EstNumérique
- Pourquoi mon exécutable compilé ne trouve pas mes fichiers de données ?
Pour faire une copie d'objet il suffit de faire une simple affectation :
Code windev : | Sélectionner tout |
1 2 3 4 5 | Objet1 est un Classe Objet2 est un Classe Objet2 = Objet1 |
Exemple avec le constructeur d'une classe dérivée :
Code windev : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | PROCEDURE Constructeur(Param1,Param2) // Appel du constructeur de la classe ancêtre (si nécessaire) // Si le constructeur de la classe ancêtre n'a pas de paramètre // L'appel est automatique, il n'y a rien à faire // À mettre impérativement au début avant les autres initialisations Ancêtre:Constructeur(Param1) // OU Constructeur Ancêtre(Param1) // OU // En cas d'héritage multiple, ou pou être plus explicite on peut nommer la classe ancêtre : ClasseAncêtre:Constructeur(Param1) // OU Constructeur ClasseAncêtre(Param1) |
Il suffit de le comparer avec NULL.
Exemple :
Code windev : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Objet1 est un objet dynamique Objet1 est un objet dynamique // Traitement qui alloue ou non l'objet // Ici comment savoir si l'objet Objet1 est alloué ? SI Objet1=Null ALORS // On est dans ce cas : Objet non alloué // Ici on alloue l'objet Objet1 = allouer un objet MaClasse SINON // On est dans le cas : Objet déjà alloué FIN |
Code windev : | Sélectionner tout |
1 2 3 | NomFenetreAffichée est une chaîne = "MaFenetre" champ_onglets_en_cours est une chaîne = "MonOnglet" volet_en_cours est un entier = 1 |
Code windev : | Sélectionner tout |
{NomFenetreAffichée+"."+champ_onglets_en_cours, indChamp}[volet_en_cours]..Visible = Vrai
Code windev : | Sélectionner tout |
MaFenetre.MonOnglet[4]..Visible = Vrai
Les indirections sont très intéressantes avec quelques limitations dont celle-ci : les indirections ne sont pas utilisables pour des accès à une propriété
Code windev : | Sélectionner tout |
1 2 | prop est une chaîne = "Libellé" BTSEL..{prop}="Rechercher" |
Code windev : | Sélectionner tout |
1 2 | Compile("traduction", "BTSEL.."+prop+"=""Rechercher""") ExécuteTraitement("traduction", trtProcédure) |
Soit en doublant les doubles quotes, soit en ajoutant le caractère ascii correspondant.
Code windev : | Sélectionner tout |
Info("Bonjour ""le monde""")
Code windev : | Sélectionner tout |
Info("Bonjour "+caract(34)+"le monde"+caract(34))
Code windev : | Sélectionner tout |
1 2 3 4 | Résultat = LigneCommande() renvoie toute la ligne de commande Résultat = LigneCommande(indice) renvoie le contenu du paramètre ayant pour indice Résultat = LigneCommande(Nom du paramètre, Valeur par défaut) si le paramètre demandé n'existe pas, c'est la valeur par défaut qui est retournée |
Qui n'a jamais fait une boucle classique utilisant le nombre de lignes d'une table mémoire, par exemple :
Code windev : | Sélectionner tout |
1 2 3 4 | POUR i=1 A TableOccurrence(TABLE1) // traitement FIN |
Code windev : | Sélectionner tout |
1 2 3 4 5 | nLignes est un entier = TableOccurrence(TABLE1) POUR i=1 A nLignes // traitement FIN |
Code windev : | Sélectionner tout |
1 2 3 4 | POUR i=1 _A_ TableOccurrence(TABLE1) // traitement FIN |
L'instruction conditionnelle "SELON" permet de choisir d'exécuter une action ou une autre en fonction de la valeur d'une expression. Il est possible de tester une valeur comprise entre un minimum et un maximum, grâce à l'opérateur : min <*< max.
Code windev : | Sélectionner tout |
1 2 3 4 | SELON nHeure CAS 0<*<16>("Bonjour") CAS 16<*<23>("Bonsoir") FIN |
WinDev, WebDev et WinDev Mobile proposent la propriété
Code windev : | Sélectionner tout |
1 2 |
..ImpressionAChaquePage |
Vous trouverez tous les détails de cette propriété dans l'aide en ligne.
Avec un point comme séparateur
Code windev : | Sélectionner tout |
VérifieExpressionRégulière(Saisie1, "([0-9]+[.][0-9]+)")
Code windev : | Sélectionner tout |
VérifieExpressionRégulière(Saisie1, "([0-9]+)|([0-9]+[,][0-9]+)")
Souvent, en mode test, on accède aux données, mais une fois qu'on compile le programme, on se retrouve avec des fichiers vides.
Ca se produit quand on utilise Hyperfile Classic.
La fonction magique pour résoudre ça, c'est la fonction hChangeRep(), à mettre en principe dans le code d'initialisation du projet. Par défaut, en mode test, le programme va lire/écrire les fichiers HF dans un répertoire Windev23/Programmes/xxx ( là où Windev est installé).
Et quand on compile le programme, il va lire/écrire les données dans un autre répertoire... Donc il ne trouve généralement aucune donnée.
Avec hChangeRep(), vous prenez le contrôle de la situation. C'est vous qui décidez où le programme doit lire et écrire les données.
Ca solutionne le problème en local (le développeur accède aux mêmes données avec le bouton Test <Go> ou avec le programme compilé. Ca ne solutionne pas complètement le cas où vous devez déployer votre programme et ses données vers un autre ordinateur.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.