Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonsoir,
Merci beaucoup Nepthis, ta solution nous donne un début de solution. Je remarque qu'elle ne marche pas sur des fenêtres avec des TAB Control. Je vais éssayer d'adapter ce bout de code à ces cas là et je reviens vers vous en cas de problème.
Une fois de plus merci pour ce coup de pouce.
Hors ligne
Bonjour,
Je viens ici vous dire merci pour toutes vos contributions, et la solution de Nephtis m'a apporté des solutions pour des frames ne possédant pas TabControl.
J'ai voulu faire de la récursivité pour atteindre les controls qui se trouvent à l'intérieur des Tabcontrols mais cela ne marche pas.
J'ai édité la structure de ma frame et je constate que nous avons par tantôt les TabControl, tantôt des userObject. Je penses peut être que c'est pour cette raison que la récursivité ne peut être appliquée ici, A moins que je sois en train de me tromper. Dans le cas où je ne me trompes pas, comment faire pour atteindre les Controls qui sont imbriqués dans dans des TabControl pour qu'eux aussi, on puisse appliqué la formule de resize ?.
Hors ligne
C'est simple : quand tu parcours tes contrôles d'une window, tu itères sur les éléments du tableau control[] de la window.
Si l'élément en cours est un tab ( tu peux récupérer la propriété classdefinition de l'objet et tester si ta classdefinition.datatypeof = 'tab') alors il faut recommencer une boucle sur le tableau control[] de cet objet
powerobject p classdefinition c p = tab_1 c = p.classdefinition if c.datatypeof = 'tab' then //itérer sur c.control[] end if
Hors ligne
Bonjour,
Comment résoudre cet erreur? Ceci arrive lorsque je veux parcourir par exemple les controls incluent dans une Tab
"Incompatible types to assignment : Datawindow, UserObject"
Hors ligne
Tu pourrais poster l'extrait du code où l'erreur se produit ? On dirait que tu essaie d'affecter un powerobject dans une variable de type datawindow...
Ajout:
Le numéro de la ligne fautive et le nom de fonction sont normalement indiqués dans le message d'erreur.
Dernière modification par seki (29-06-2015 13:50:03)
Hors ligne
legagneur a écrit:
Bonjour,
Comment résoudre cet erreur? Ceci arrive lorsque je veux parcourir par exemple les controls incluent dans une Tab
"Incompatible types to assignment : Datawindow, UserObject"
Voilà une fonction qui parcours tous les objets d'une fenêtre et leur envoie un message
La déclaration de cette fonction est :
of_TriggerEvent() access protected return Integer arguments as_event type string pass by value ago_control[] type graphicobjet pass by value
Le traitement est :
Tab ltab Userobject luo Integer li, li_maxControl li_maxControl = Upperbound(ago_control[]) If gnvo_parametre.of_Geterreur() = true then return -1 For li = 1 to li_maxControl Choose Case Typeof (ago_control[li]) Case Tab! ltab = ago_control[li] ltab.triggerEvent(as_event) of_triggerEvent(as_event,ltab.control[]) Case Userobject! luo = ago_control[li] luo.triggerEvent(as_event) of_triggerEvent(as_event,luo.control[]) Case Else ago_control[li].triggerEvent(as_event) End choose Next Return 1
Dernière modification par Dadone (29-06-2015 13:35:24)
Hors ligne
Bonsoir,
Je me permet de réveiller un sujet qui date déjà un peu. Je voudrai illustrer mon propos par deux images qui sont les suivantes
Image 1 :
Image 2 :
Dans le cas de l'image 2 ou la Frame 2, la solution proposé par Nephtis fonctionne à merveille et résous mon problème initial.
Cependant, dans le cas de l'image 1 ou la Frame 1, avec des Tabpages et des controls encapsulés cela pose tous les problèmes. Par exemple, Il est impossible de pouvoir récupérer les controls "Static Text 1", "Sle_1", "Tab page 2 1", "Static Text 2", "Sle_2" afin de récuperer leurs dimensions initiales et de recalculer les nouvelles en fonction du ratio que nous nous aurons fixer.
J'ai essayé avec la récursivité mais cela n'a pas marché. Peut-être parce que je m'y prenais mal.
Je sollicite donc votre aide afin que ce problème soit définitivement resolu
Merci EDIT (seki) : j'ai mis les images en direct au lieu de suivre un lien pénible
Hors ligne
legagneur a écrit:
Bonsoir,
Je me permet de réveiller un sujet qui date déjà un peu. Je voudrai illustrer mon propos par deux images qui sont les suivantes
Image 1 : https://lut.im/nX7z64u3X7/kE22vqBrfx9q36mk.PNG
Image 2 : https://lut.im/x1Lh2I0BZn/27AxI8mzRixJxV5F.PNG
Dans le cas de l'image 2 ou la Frame 2, la solution proposé par Nephtis fonctionne à merveille et résous mon problème initial.
Cependant, dans le cas de l'image 1 ou la Frame 1, avec des Tabpages et des controls encapsulés cela pose tous les problèmes. Par exemple, Il est impossible de pouvoir récupérer les controls "Static Text 1", "Sle_1", "Tab page 2 1", "Static Text 2", "Sle_2" afin de récuperer leurs dimensions initiales et de recalculer les nouvelles en fonction du ratio que nous nous aurons fixer.
J'ai essayé avec la récursivité mais cela n'a pas marché. Peut-être parce que je m'y prenais mal.
Je sollicite donc votre aide afin que ce problème soit définitivement resolu
Merci
La précédente fonction que j'ai donné est récursive et fonctionne.
Hors ligne
Dadone a écrit:
La précédente fonction que j'ai donné est récursive et fonctionne.
Bonjour Dadone,
Je dois vous avouer que je n'arrive pas à integrer votre fonction.
Pouvez-vous des bouts de code avec leur enchainement dans les différentes fonctions?
Merci
Hors ligne
legagneur a écrit:
Dadone a écrit:
La précédente fonction que j'ai donné est récursive et fonctionne.
Bonjour Dadone,
Je dois vous avouer que je n'arrive pas à integrer votre fonction.
Pouvez-vous des bouts de code avec leur enchainement dans les différentes fonctions?
Merci
En effet, désolé, dans le code donné il y a une référence à une classe qui n'existe pas : gnvo_parametre
Dans une premier temps, on peut sans passer (il suffit de ne pas l'utiliser) car c'est une gestion d'erreur afin d'arrêter le traitement récursif lorsqu'une erreur c'est produite lors des différents appels.
A part cet aspect, la routine est exhaustive.
Dernière modification par Dadone (07-12-2016 13:20:07)
Hors ligne
Dadone a écrit:
En effet, désolé, dans le code donné il y a une référence à une classe qui n'existe pas : gnvo_parametre
Dans une premier temps, on peut sans passer (il suffit de ne pas l'utiliser) car c'est une gestion d'erreur afin d'arrêter le traitement récursif lorsqu'une erreur c'est produite lors des différents appels.
A part cet aspect, la routine est exhaustive.
Bonjour Dadone,
En effet, mes préocupations pour être concretes sont les suivantes :
1- Nephtis avait proposé des éléments dans l'évènement Open, Puis dans le resize de chaque frame. Ce qui marchait plutôt bien pour des frames sans Tab Control ou User Object.
2- Vous avez proposé une fonction récursive qui viendrait résoudre le problème ce problème.
Cependant, je ne vois pas comment sauvegarder les dimensions originales et ensuite recalculer les nouvelles dimensions à partir des anciennes en utilisant votre fonction.
C'est pour cela que je vous prie de bien vouloir indiquer comment intégrer la fonction récursive dans ce qu'à proposer Nephtis.
Merci pour votre aide
Hors ligne
Bonjour,
Je n'ai pas de solution à mon problème qui date déjà un peu.
J'aimerai savoir si mon problème a été mal posé car je suis déjà, il faut l'avouer un peu désespérer.
Hors ligne
legagneur a écrit:
Bonjour,
Je n'ai pas de solution à mon problème qui date déjà un peu.
J'aimerai savoir si mon problème a été mal posé car je suis déjà, il faut l'avouer un peu désespérer.
Il faut enregistrer les dimensions originales dans un tableau qui sera une propriété de classe, avec une correspondance avec les références.
Dernière modification par Dadone (19-01-2017 14:06:22)
Hors ligne
Est-ce que mon nv_auto_resizer ne ferait pas l'affaire ? ( http://pbadonf.fr/forum/viewtopic.php?pid=33953#p33953 )
Hors ligne