Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
Je rencontre un nouveau probleme dans le développement de mon application PowerBuilder.
Je situe rapidement le contexte :
J'ai une fenetre w_pense-bete qui contient un objet de type tab ("onglet")
Cet objet tab, tab_pense-bete, contient trois onglets dont l'onglet tabpage_titres
Sur cet onglet j'ai ajouté entre autres une datawindow : dw_liste_titre
Ce que je souhaite maintenant c'est que lorsque j'ouvre la fenêtre w_pense-bete, la datawindow dw_liste_titre soit "configurée" en fonction du paramètre passé lors de l'ouverture de la fenêtre w_pense-bete.
Et comme un bout de code vaut mieux qu'un long discours :
/*************************************************** * Commentaires : * Ce script s'executera lors de la création de la fenêtre * contenant les onglets du pense-bete. * Il effectuera essentiellement des actions sur la datawindow * 'dw_liste_titre' présent dans 'tabpages_titres' de 'tab_bloc-note' * pour pouvoir récupérer les bonnes informations. * ***************************************************/ /************************************* * Déclaration des variables *************************************/ str_bloc_note str_bn Long code_editeur String nom_dataobject /************************************** * Début du script **************************************/ str_bn = Message.PowerObjectParm if isValid(str_bn) then nom_dataobject = str_bn.nom_dataobject this.tabpages_titres.dw_liste_titre.dataobject = nom_dataobject if (nom_dataobject = "d_liste_titre_editeur") then code_editeur = str_bn.code_editeur this.tabpages_titres.dw_liste_titre.retrieve(code_editeur) else MessageBox("Erreur lors de l'ouverture du pense-bete", "Le dataobject '" + nom_dataobject + "' n'existe pas dans la librairie") end if else MessageBox("Erreur lors de l'ouverture du pense-bete", "La structure passée en paramètre n'a pas été instanciée") end if
Quand j'essaie d'enregistrer ce script ("constructor" du tab de la fenetre) j'obtiens les messages d'erreurs très spécifiques :
Incompatible property tabpages_titres for type tab_bloc-notes
Comment acceder à l'objet datawindow?
Merci pour vos reponses
Hors ligne
salut, au lieu de tabpages_titres ça ne serait pas plutot tabpage_titres ?
Hors ligne
ah j'ai honte
C'était ça!
En tout cas merci beacoup
Hors ligne
Pas tout à fait résolu
J'ai lancé le programme en codant un bouton rapidement afin d'appeler la fenetre avec une bonne structure en tant que paramètre mais j'obtiens des bugs lors de l'execution de la commande :
this.tabpage_titres.dw_liste_titre.dataobject = nom_dataobject
Le message d'erreur remonté est le suivant (je pense pas que c'est un message d'erreur standard mais je préfère le mettre quand meme):
Pour information voila une copie d'ecran du debugger juste avant le bug :
Dessus je vois bien tabpage_titre mais pour ce qui est de la datawindow, elle s'appelle dw_1.
Est ce que cela a vraiment une incidence ou est ce que je me trompe de chemin?
[EDIT 15h16]
Je viens de modifier le script "constructor" et en effet il y a une erreur pour la compilation de ce script.
Cette fois ci le message d'erreur est :
Incompatible property dw_liste_titre for type tab_pense-bete`tabpage_titres
Pourquoi cette erreur?
Merci pour vos reponses
Dernière modification par Nephtis (02-07-2007 13:19:25)
Hors ligne
je vois trouble... l'image peut etre un peu plus claire ?
Hors ligne
Excuses moi, ce n'est pas encore ton problème actuel, mais je vois que tu essaies de changer le dataobject puis de faire un retrieve juste après.
N'oublies pas d'associer une transaction (settransobject par exemple) à ta DW après le changement de dataobject et avant le retrieve....
Hors ligne
Tu es sur le constructor du tab_bloc-notes et tu fais référence à this.tabpage_titres.
Or tu veux atteindre le tab_pense-betes.tabpage_titres ? Donc ton this est faux....
Ou plus surement ta capture d'écran du debugger n'est pas sur le bon objet.
Hors ligne
En fait sur la fenetre w_pense-bete j'ai ajouté l'objet tab_pense-bete
Si j'affiche les propriétés de cet objet on peut voir que la propriété Name = tab_bloc-note
Donc je ne pense pas vraiment que le this soit vraiment faux(si j'avais plusieurs objets de type tab_pense-bete il faudrais bien que je les identifie par leur attribut name) ou alors je n'ai pas encore vu la subtilité de mon erreur
Hors ligne
Voila pour la netteté des images (par contre le bmp c'est un peut lourd à charger ) :
debugger
Amis du 56k je suis vraiment désole
Hors ligne
Tu ne veux pas envoyer ta fenêtre (un lien sur le .srw serait sympa).
Je me suis permis de remplacer ton image par un lien, pour éviter que l'accès au topic devienne un piège mortel
Hors ligne
Chrnico a écrit:
Tu ne veux pas envoyer ta fenêtre (un lien sur le .srw serait sympa).
Heuuu... srw je sais pas trop ce que c'est
J'ai commencé PB y a meme pas 1 semaine, désolé
Hors ligne
Nephtis a écrit:
Chrnico a écrit:
Tu ne veux pas envoyer ta fenêtre (un lien sur le .srw serait sympa).
Heuuu... srw je sais pas trop ce que c'est
J'ai commencé PB y a meme pas 1 semaine, désolé
Cliques avec le bouton droit sur l'objet dans ton library painter et fait Export.
Et là, c'est magique, il te crée un fichier avec l'extension .srw (SouRce Window)
Hors ligne
Ok c'était super compliqué
Voila je l'avais déposé ici (retiré car confidentiel)
Par contre est ce que le simple export de la window w_pense-bete suffit ou faut il les autres objets qui sont des controles de cette window?
Dernière modification par Nephtis (02-07-2007 14:50:44)
Hors ligne
Nephtis a écrit:
Ok c'était super compliqué
Voila je l'ai déposé ici
Par contre est ce que le simple export de la window w_pense-bete suffit ou faut il les autres objets qui sont des controles de cette window?
Je veux bien le source du userobjet tab_pense-bete...
Hors ligne
C'est comme ci c'était déja fait (retiré car confidentiel)
Dernière modification par Nephtis (02-07-2007 14:51:20)
Hors ligne
Et maintenant cst_titres
Hors ligne
J'aurais la prévoir celle la (retiré car confidentiel)
Dernière modification par Nephtis (02-07-2007 14:51:38)
Hors ligne
J'ai comme l'impression que
this.tabpage_titres.dw_1.dataobject = nom_dataobject
fonctionnerait mieux...
N'oublies pas d'ajouter un settransobject juste après sur ta transaction (dans l'exemple ci-dessous, sqlca)
this.tabpage_titres.dw_1.SetTransObject(sqlca)
Hors ligne
Oui ça marche mieux
Je viens de comprendre pourquoi ça marchais pas. Avant j'avais une datawindow qui héritait d'un ancetre et que j'avais bien nomé dw_pense-bete (ou dw_bloc-note, moi aussi je m'embrouille l'esprit avec cette histoire ).
Mais ensuite je l'ai remplacé par une datawindow "standard" sans la renommer
Merci d'avoir eclairé mes lanternes
Pour ce qui est du setTransObject j'allais le faire aussitot le probleme résolu, merci
Dernière modification par Nephtis (02-07-2007 14:13:52)
Hors ligne
Pages: 1