OVH Cloud OVH Cloud

Clônage de champs inter-fenêtres

6 réponses
Avatar
Bonjour,

Nous travaillons sur un projet d'environ 400 fenêtres et avons besoin
d'utiliser le clônage de champs dans chaque fenêtre (pour faciliter la
personnalisation dynamiquement par les utilisateurs). Nous ne parvenons pas
à clôner un champ à partir d'une autre fenêtre que la fenêtre active. Il
n'est pas envisageable de copier/coller les champs originaux dans chaque
fenêtre de l'applicaiton...

Notre idée était de cacher dans la première fenpetre du projet tous les
types de champs clônables et de les clôner ensuite depuis les fenêtres
filles. Une telle manipulation est-elle possible ? Si oui, comment ?

Merci.
<:o)

6 réponses

Avatar
Romain PETIT
Le 07/08/2004, <:o) a supposé :
Bonjour,



Bonsoir,

Nous ne parvenons pas
à clôner un champ à partir d'une autre fenêtre que la fenêtre active.


[...]
Une telle manipulation est-elle possible ? Si oui, comment ?



Ce n'est malheureusement pas possible avec Champclone...
Les seuls clones (en WD7.5 en tout cas) ne sont possibles qu'au sein de
la fenetre (ou l'état) du champ cloné...

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
JC FLAJOULOT
> Ce n'est malheureusement pas possible avec Champclone...
Les seuls clones (en WD7.5 en tout cas) ne sont possibles qu'au sein de
la fenetre (ou l'état) du champ cloné...




Bonjour,

Testé en WD8, idem à la 7.5

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Avatar
Merci Romain

10 fois plus vite, qu'ils disaient :-(((((


"Romain PETIT" a écrit dans le message de
news:
Le 07/08/2004, <:o) a supposé :
> Bonjour,

Bonsoir,

> Nous ne parvenons pas
> à clôner un champ à partir d'une autre fenêtre que la fenêtre active.
[...]
> Une telle manipulation est-elle possible ? Si oui, comment ?

Ce n'est malheureusement pas possible avec Champclone...
Les seuls clones (en WD7.5 en tout cas) ne sont possibles qu'au sein de
la fenetre (ou l'état) du champ cloné...

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Romuald.besset
Romain PETIT wrote:
Le 07/08/2004, <:o) a supposé :

Bonjour,




Bonsoir,

Nous ne parvenons pas
à clôner un champ à partir d'une autre fenêtre que la fenêtre active.



[...]

Une telle manipulation est-elle possible ? Si oui, comment ?




Ce n'est malheureusement pas possible avec Champclone...
Les seuls clones (en WD7.5 en tout cas) ne sont possibles qu'au sein de
la fenetre (ou l'état) du champ cloné...

A+




Hum,

Bonjour et pardon de vous contredire (une fois n'est pas coutûme)!
J'ai testé à l'époque (7.5) cela avec un succès relatifs.

le clone se retrouve dans la fenêtre du champs cloné, c'est fort juste !
Mais à partir de la, il est possible de le manipuler via les API pour
l'associer (visualisation) à une autre fenêtre (en modifiant un de ses
paramètres (handle fenêtre hote).

note : la fenêtre initiale ne doit absolument pas être fermée (et pour
cause) mais je vous informe que c'est certainnement cette manipulation
qui est à l'origine du champsupprime... laquelle me manquait pour mes
tests. Evidement je ne remettrais pas la mais sur ce bout de code aussi
simplement mais on peut 'monter' dans une fenêtre un champ cloné depuis
une autre... de là à le manipuler, il faut conserver le lien
fenInitiale.nomchamp et hop !

++ R&B qui revient de l'espace intersidéral
Avatar
> Mais à partir de la, il est possible de le manipuler via les API pour
l'associer (visualisation) à une autre fenêtre (en modifiant un de ses
paramètres (handle fenêtre hote).



Auriez-vous l'aimabilité de nous expliquer comment modifier le handle de la
fenêtre hôte ?
Merci
Avatar
Romain PETIT
Romuald.besset a émis l'idée suivante :

peut 'monter' dans une fenêtre un champ cloné depuis une autre... de là à le
manipuler, il faut conserver le lien fenInitiale.nomchamp et hop !



Oui effectivement, on peut ensuite changer le parent :

** fenetre1 qui contient le bouton BTN

** fenetre2
* Code d'initialisation (fenetre1 doit être ouverte):
// on clone le champ
ChampClone(fenetre1.BTN, "BTNclone", 0,0)
// on lui attribue fenetre2 comme nouveau parent
API("user32", "SetParent", Handle("fenetre1.BTNclone"), Handle())
// on manipule le clone sur la nouvelle fenetre
{"fenetre1.BTNclone",indChamp}..X = 10
{"fenetre1.BTNclone",indChamp}..Y = 10

Comme tu le précises, le fait de changer de parent ne modifie pas les
références de l'objet cloné, ce qui implique que le clone ne sera
réellement supprimé que lorsque la fenetre d'origine du champ (ici
*fenetre1*) sera fermée
(donc attention au nom du clone qui devra être unique à chaque création
et surtout aux ressources systèmes en cas de nombreux clonages
répétitifs)

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)