PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → image dans table
image dans table
Débuté par gilles, 11 juil. 2005 20:12 - 5 réponses
Posté le 11 juillet 2005 - 20:12
bonjour, j'ai une table qui affiche le résultat d'une requêtes, et pour une colonne (statut), je voudrais que en fonction de la valeur (1,2 ou 3) une image soit affichée. comment puis-je faire??

exemple :
si table.statut = 1 alors
table.statut = image1
fin

je suis très nul point de vue image donc si vous savez m'aider je vous en serais très reconnaissant d'être précis.
merci
Posté le 12 juillet 2005 - 08:06
Ce n'est pas compliqué : il faut évidemment dépendre d'un condition qui doit se trouver dans un autre champ.

Voici un exemple extrait de mon code - TABLE MEMOIRE
---------------------------------------------------------------
SI GET_TASKS.FlagHeader = Faux ALORS
SI Table.Period[i] = 0 ALORS
Table.Staff[i] = imgStaff_D
SINON
Table.Staff[i] = imgStaff
FIN
Table.PictoClic[i] = imgT
SINON
Table.Staff[i] = ""
Table.PictoClic[i] = imgMoins
FIN

- Il s'agit ici d'une table mémoire, remplie "a mano", ce qui explique le "i".
- Les champs "Staff" et "PictoClic" sont des champs images.
- Les conditions de traitement sont placées dans des colonnes qui ne sont pas nécessairement visibles, c'est selon.
- Les images "imgStaff" et autres sont des petits champs images (ici en 16x16), placés hors fenêtre et contenant l'image à utiliser.

////////////////////////////////////////////////////////////
Voici un autre exemple - Table FICHIER
---------------------------------------------
Il faut mettre dans l'événement "Fin d'initialisation de champ TABLE" un code dans le genre de (même principe pour les champs image):

lcv est un entier
ResNombreLigne est un entier = TableOccurrence(Table)
POUR lcv = 1 A ResNombreLigne
Table.PictoFiche[lcv] = imgUserForm
Table.PictoTimesheet[lcv] = imgTimesheet
FIN

Dans celui de "Entrée en saisie d'une ligne de TABLE" quelque chose comme :

SI Table.IDPeriods < 1 ALORS
Table.IDPeriods = aIDPeriods
Table.PictoFiche = imgUserForm
Table.PictoTimesheet = imgTimesheet
FIN

- Ici, le champ IDPeriod est la clé primaire, on ne traite donc que les nouveaux enregistrements et on s'assure qu'au moment de la création, l'image est là, bien visible.

Dans l'événement "Affichage d'une ligne de TABLE" :
Table.PictoFiche = imgUserForm
Table.PictoTimesheet = imgTimesheet

- Utilisé pour les rafraîchissements. En effet, par opposition à la table mémoire, l'image n'est pas "écrite", mais affichée. Donc à chaque relecture à partir du fichier, ce champ vide puisqu'il n'existe pas dans la table est réinitialisé.

Voilà. J'espère que c'est complet.

@+

FGH
Posté le 12 juillet 2005 - 10:07
Dans ta fenêtre tu utilises 3 champs images qui sont invisibles.
Tu définis une colonne de type image dans ta table.

Et pour l'initialiser tu fais :
si table.statut[ligne] = 1 alors
table.image[ligne] = champimage1
fin


Cordialement
Posté le 12 juillet 2005 - 12:10
j'ai essayé et donc dans initialisation de la table, j'ai mis :

nbr_ligne est un entier
nbr_ligne = TableOccurrence(Table)
i est un entier
POUR i = 1 A nbr_ligne
SI Table.statut[i] = 1 ALORS
Table.image[i] = Imageafaire
FIN
SI Table.statut[i] = 2 ALORS
Table.image[i] = Imageencours
FIN
FIN

mais ca ne fonctionne pas
je précise que c'est une table en affichage seulement et donc à l'initialisation de la table, toutes les valeurs provienne d'une requete
Posté le 12 juillet 2005 - 12:11
un grand merci pour ton aide et ta précision
Posté le 15 juillet 2005 - 06:36
// D'abord tu crée une colonne de type image visible et cache ta colonne statut et
// Dans Affichage d'une ligne de table

si colonnestatut = 1 alors
colonneimage[TableOccurrence(Table)] = image1
fin
si colonnestatut = 2 alors
colonneimage[TableOccurrence(Table)] = image2
fin
si colonnestatut = 3 alors
colonneimage[TableOccurrence(Table)] = image3
fin