Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je souhaite inserer le chemin d'une image puis afficher dynamiquement l'image dans un "picture object" que j'ai placé sur la datawindows contenant les champs de la table que j'utilise (Le chemin de la photo aussi s'y trouve).
Quelqu'un peut-il m'aider?
Merci.
Hors ligne
Tu peux utiliser une compute avec en expression la fonction "bitmap"
et en paramètre le chemin d'accès de ton image
Hors ligne
Bonjour,
Le principe est de charger l'image en mémoire dans une variable de type BLOB à l'aide des fonctions (FileOpen, FileRead ou FileReadEx , FileClose).
Ensuite tu affiches l'image dans ton "picture control" :
picturecontrol.SetPicture( bimage )
Hors ligne
Bonjour,
j'utilise un fichier PBR dans lequel je mets les chemins des fichiers BMP que je manipule. Ce fichier est compilé avec mon exe
et j'utilise :
win_1.P_1.PictureName = install_dir+"\IMAGES\toto.bmp"
Hors ligne
N'oubliez pas cependant que nous sommes dans une datawindow, pas sur un picture controle dans une fenêtre
Maintenant, il est vrai qu'il existe beaucoup de solutions différentes
pour gérer dynamiquement les images au sein d'une datawindow. Tout dépend du besoin et des exigences de l'utilisateur final
Hors ligne
Désolé Foon
dw_1.object.p_1.filename = install_dir+"\IMAGES\toto.bmp"
Hors ligne
Mon object picture je l'ai placé sur ma datawindows je n'arrive pas à faire afficher l'image sur l'objet picture de la datawindow.
le code que j'ai écrit dans l'évènement click de mon bouton qui me permet d'insérer l'image est le suivant:
integer li_FileNum,ret string txtname, named blob l_image //string defext = "BMP" //string Filter = "bitmap Files (*.bmp), *.bmp" ret = GetFileOpenName("Open Bitmap", txtname, named) IF ret = 1 THEN li_FileNum = FileOpen(txtname, StreamMode!) IF li_FileNum <> -1 THEN FileRead(li_FileNum, l_image) FileClose(li_FileNum) dw_eleve.object.p_photo[ii_NUM_LIGNE_eleve].SetPicture(l_image) dw_eleve.object.photoeleve[ii_NUM_LIGNE_eleve] =txtname END IF END IF
NB :
Hors ligne
Attention, tu utilise ton Picture control comme une colonne. Il ne peut y avoir de numéro de ligne.
Quant à ta colonne photoeleve, elle est sert à afficher le chemin de l'image? Tu peux la remplacer par un statictext par exemple.
tu peux essayer ça pour voir?
integer ret string txtname, named //string defext = "BMP" //string Filter = "bitmap Files (*.bmp), *.bmp" ret = GetFileOpenName("Open Bitmap", txtname, named) IF ret = 1 THEN dw_eleve.object.p_1.filename = txtname dw_eleve.object.photoeleve.text =txtname END IF
MESSAGE DE MODERATION - BALISE CODE : utilise code=pb et non code:pb
Hors ligne
FOSTA utilise la methode de foon c'est la plus appropriée pour ton probleme tu utilises le controle creat a computed field et prends la fonction bitmap (bitmap(le champ ou se trouve le chemin de l'image)
j'espere d'avoir aider petit Papa
Hors ligne
Bonjour,
Dans ma réponse, j'étais parti sur le fait que tu posais un "windows picture control" ( et non un "datawindow picture control") par dessus la datawindow comme je le fais dans mon application.
Evidemment, la méthode setpicture du picture control n'est valable que pour le "windows picture control".
Je stocke les images dans une colonne de type blob de la base de données, ceci m'évite de décharger l'image en local sur le disque pour la réafficher. L'autre avantage est de pouvoir conserver la proportionnalité de l'image à l'affichage en retaillant dynamiquement de façon adéquate le picture control :
Hors ligne
0 000 pour buck (et au passage, arretes de me narguer avec tes jolis ecrans )
Hors ligne
Merci à tous, j'ai réessayer ça marcher avec la méthode foon.
Hors ligne
N'oublie pas le [RESOLU]
Hors ligne