Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 30-09-2008 16:02:46

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Handle d'un control dans une datawindow

Bonsoir,

J'essaie de récupérer le handle d'un objet dans une datawindow. Le handle c'est un identifiant de fenêtre/objet pour Windows. J'ai besoin de ce handle pour le passer à une DLL qui se chargera d'afficher une image dans la fenêtre/objet en question. Etant donné que je veux que l'image soit affichée dans une zone spécifique de ma dtawindow, j'essaie de positionner une contrôle sur cette zone et de récupérer son handle.

Je peux obtenir sans soucis le handle de la fenêtre courante, ainsi que le handle de ma datawindow dans ma fenêtre courante.
En revanche, je n'obtiens rien lorsque je demande le handle d'un objet à l'intérieur de ma datawindow :

Code: pb

messagebox('', string(handle(ma_datawindow.object.ma_zone_image[1]))) // Retourne ''

Bien entendu, j'ai inséré un row avant de tenter cela ;)
J'ai essayé d'ajouter un nested report dans ma datawindow, je l'ai récupéré avec GetChild, mais au final je n'obtiens pas de handle non plus.

Voici ce que dit la documention au sujet de handle() :

Obtains the Windows handle of a PowerBuilder object. You can get the handle of the application, a window, or a control, but not a drawing object.
If objectname cannot be referenced at runtime, Handle returns 0 (for example, if objectname is a window and is not open).

Auriez-vous une idée ?

Hors ligne

 

#2 30-09-2008 16:55:56

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Handle d'un control dans une datawindow

Bonsoir,

Si tu utilises une datawindow (non multiligne), tu peux toujours essayer d'afficher l'image sur un windows picture control en superposant le picture control à ta datawindow en lieu et place du datawindow picture control. L'effet visuel sera le même.

Dans ce cas, tu pourras récupérer le Handle du contrôle.

Hors ligne

 

#3 01-10-2008 07:05:39

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: Handle d'un control dans une datawindow

Bien vu Buck, mais... Cette datawindow n'est pas visible Elle est simplement destinée à être imprimée, donc il faut que mon contrôle appartienne à la datawindow, sans quoi il ne sera pas imprimé comme désiré. Je vais voir s'il ne m'est pas possible de capturer les données de l'image chargées par l'objet COM, d'enregistrer ce contenu dans un fichier image temporaire, puis de reloader cette image dans un picture control... Mais bon...

Dernière modification par Nyphel (01-10-2008 07:58:10)

Hors ligne

 

#4 01-10-2008 09:00:15

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: Handle d'un control dans une datawindow

Sans vouloir jouer les troubles fêtes, mon cher Nyphel, es-tu sûr de ne pas essayer d'écraser une mouche avec un bazooka là?

D'après moi, si c'est pour imprimer, et que PB ne te fournit pas une fonctionnalité de dessin dont tu as besoin, le passage par les API me parait judicieux. Mais il me semble que les API d'impression n'ont pas besoin d'un quelconque contrôle comme support de dessin (mais c'est évidemment plus complexe).
De plus, je suis presque sûr (sans avoir essayé moi-même je l'avoue) que dessiner via API sur un controle PB invisible n'aboutira qu'à une sortie papier très mitigée... J'ai déjà remarqué que le refresh de tels dessins posaient des problèmes, surtout si on joue sur le visible du contrôle hôte.

Bref, je pense que ton idée de passer par un fichier image temporaire est - à mon humble avis - beaucoup mieux...

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22