IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Windev 14 : Dessiner dynamiquement dans une cellule de table avec les fonctions de dessin (dDebutDessin etc.)


Sujet :

Contribuez

  1. #1
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut Windev 14 : Dessiner dynamiquement dans une cellule de table avec les fonctions de dessin (dDebutDessin etc.)
    Voici une petite astuce pour dessiner dynamiquement des images dans une cellule de table, avec les fonctions de dessin de Windev : http://doc.pcsoft.fr/fr-FR/?3029033&...nctions_Dessin

    Dans mon exemple, la colonne Col_Conteneur de la table table1 est de type "Conteneur" (cf : http://doc.pcsoft.fr/fr-FR/?colonne-...type-conteneur).

    Dans ce conteneur, j'ai placé un champ image "Image1" (Mode d'affichage 100% dans le coin haut gauche).
    Dans ma fenêtre, j'ai aussi un champ image nommé "Image1" (Qui n'est pas forcément visible).

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    LOCAL
    	iLargeurColonne est un entier
    	iHauteurLigne est un entier
    	iIndice est un entier 
    	bfImg est un Buffer
     
    iIndice = TableAjouteLigne(Table1)
     
    iLargeurColonne = Table1.Col_Conteneur[iIndice]..Largeur-1
    iHauteurLigne    = Table1.Col_Conteneur[iIndice]..Hauteur-1
     
    Image1..Largeur = iLargeurColonne
    Image1..Hauteur = iHauteurLigne
     
    dDébutDessin(Image1)
    dRectangle(0,0,iLargeurColonne-1,iHauteurLigne-1,iJauneClair,iNoir)
     
    bfImg  = dSauveImagePNG(Image1,enMémoire)
     
    Table1.Col_Conteneur[iIndice].Image1..Largeur = iLargeurColonne
    Table1.Col_Conteneur[iIndice].Image1 = bfImg
     
    //Ces exemples ne fonctionnent pas, c'est la raison pour laquelle je doit passer par un champ Image de ma fenêtre : 
    //dCopieImage(Image1,Table1.Col_Conteneur[iIndice].Image1)
     
    //dDébutDessin(Table1.Col_Conteneur[iIndice].Image1)
    //dRectangle(0,0,iLargeurColonne-1,iHauteurLigne-1,JauneClair,iNoir)
    Si vous avez une idée pour optimiser ce code, je suis preneur !

    Bonne prog

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Il serait bien de rappeler la version mini a avoir pour faire ce genre de manipulation.

    Car la colonne de type conteneur d'après l'aide n'est apparut qu'en version 14.
    Si quelqu'un peux confirmer.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  3. #3
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Je confirme, la colonne conteneur est apparue avec la version 14
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Une méthode plus optimisée serait de se passer de l'étape intermédiaire "dessin dans une zone, enregistrement vers fichier, chargement du fichier vers nouvelle zone". Ce sera plus propre et certainement plus rapide.

    Les fonctions gXXX permettent de dessiner directement dans les listes, combos et cellules de table. De plus l'utilisation de conteneur est inutile, vous pouvez dessiner dans une cellule "texte".

    Exemple rapide :

    Créez un champ table rempli par programmation avec une colonne texte et le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAjouteLigne(Table1,gRectangle(0,0,18,18,iJauneClair,iNoir))

  5. #5
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut
    Une méthode plus optimisée serait de se passer de l'étape intermédiaire "dessin dans une zone, enregistrement vers fichier, chargement du fichier vers nouvelle zone". Ce sera plus propre et certainement plus rapide.
    Il est certain que cela serait plus propre, mais je n'ai pas trouvé d'autre façon de faire.

    Quoi qu'il en soit, il n'y a pas d'écriture dans un fichier (sur le disque) mais en mémoire avec la fonction bfImg = dSauveImagePNG(Image1,enMémoire).

    Je connais la méthode que vous proposez, mais elle est limitée :
    Je ne peut pas par exemple faire en sorte que la cellule soit de deux couleurs différentes, ce qui était mon objectif à la base (Dessin de planning en fusionnant les cellules).
    Pour afficher un rectangle de couleur avec un contour, c'est effectivement le plus simple.

    J'ajoute que la méthode peut être utilisée avec une colonne de type "image" mais avec moins de souplesse que la colonne "Conteneur" :
    -Si l'on souhaite ajouter du texte, on doit l'écrire sur l'image avec les fonctions de dessin.
    -Je ne suis pas parvenu a ajuster l'image affichée au pixel par rapport à la taille de la cellule (Décalage d'un pixel à gauche).

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Mea culpa pour la partie écriture fichier, je n'ai pas vu la subtilité en effet.

    Concernant la couleur double, par contre, je vous corrige. Il possible de dessiner plusieurs éléments dans la même cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAjouteLigne(Table1,gRectangle(0,0,30,18,iJauneClair,iJauneClair) + gRectangle(31,0,60,18,iVertClair,iVertClair)))
    Toutes les combinaisons de fonctions gXXX sont permises et les possibilités nombreuses.

    Le plus gros inconvénient que je vois avec cette méthode est que le redimensionnement de la colonne n'est pas appliqué contrairement à une image avec redimensionnement.

Discussions similaires

  1. [WD14] Bulle dans une cellule de table
    Par youkoun dans le forum WinDev
    Réponses: 10
    Dernier message: 15/02/2022, 15h51
  2. [Toutes versions] Translation dynamique dans une cellule
    Par patricktoulon dans le forum Contribuez
    Réponses: 10
    Dernier message: 23/06/2013, 19h15
  3. rentrer dans une cellule de table par prog
    Par hehehe dans le forum WinDev
    Réponses: 3
    Dernier message: 22/10/2010, 15h00
  4. Dessin dynamique dans une Scene
    Par Jk.speed dans le forum JavaFX
    Réponses: 4
    Dernier message: 18/03/2010, 11h04
  5. [FPDF] Contenu dynamique dans une cellule
    Par HwRZxLc4 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 27/12/2007, 12h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo