Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Salut
j'ai un petit souci avec des appels de sheet (opensheet) dans une MDI...
A partir du moment ou il existe un objet graphique, visible ou pas, dans ma MDI, l'opensheet fonctionne, enfin la valeur de retour est correct, mais la sheet reste invisible...
La sheet est de type child...
Si je passe par un open(), cela fonctionne très bien, mais je ne peux pas utiliser open()
Quelqu'un a t-il une idée??
//code dans l'open de la MDI close(This.GetActiveSheet ( )) integer li_test li_test = opensheet(w_menu_info, This,0, Original!) //li_test vaut bien 1...
Merci de votre aide...
Dernière modification par Pilou007 (13-01-2009 10:11:39)
Hors ligne
Bonsoir,
Tu as vérifié que la case "Visible" dans l'onglet "General" des properties de ta sheet est bien cochée?
Ou que tu ne modifies pas cette propriété par code?
Hors ligne
oh boh oui alors!!!!
oui bien sur, comme je viens de modifier mon dernier message....
si je supprime les objet de ma MDI, ça fonctionne, si j'utiliseopen au lieu de opensheet, ça fonctionne....
Merci
Hors ligne
Ce ne serait pas une response ta sheet par hasard?
Aide Pb a écrit:
Opening response windows Do not use the OpenSheet function to open a response window.
Hors ligne
Bon ok je viens de mettre mon message à jour trop tard, hihihihi, elle est de type child ma sheet...
Merci
Dernière modification par Pilou007 (12-01-2009 16:51:35)
Hors ligne
Bonjour,
Ta fenêtre principale est bien de type : Main ?
Hors ligne
Non ma fenêtre principale est de type MDI,
Le plus simple, c'est de le tester, et c'est très simple à faire...
Tu prends une MDI, tu y place un bouton un un statictext, dans l'open, tu lui fais opensheet( my_sheet, this) et on voit le résultat de suite....
merci
Hors ligne
Bonjour,
Autant pour moi en fait je voulais effectivement dire mdi!.
Le comportement que tu observes est tout à fait normal, en fait la taille de la surface cliente pour dessiner les fenêtres mdi enfants n'est pas prise en charge par Powerbuilder lorsque tu positionnes des contrôles graphiques sur la fenêtre MDI, tu dois la retailler manuellement :
However, in a custom MDI frame window—where the client area contains controls in addition to open sheets—PowerBuilder does not size the client area; you must size it. If you do not size the client area, the sheets open but may not be visible and are clipped if they exceed the size of the client area.
Tu trouveras un exemple dans la documentation de Powerbuilder qui correspond exactement à ta situation pour retailler la surface cliente de la MDI :
Application Techniques -> Chapter 5 Building an MDI Application -> Sizing the client area
Hors ligne
Salut Buck
Merci pour la réponse, de mon coté ça ne marche toujours pas...
Voici mon code, je vois bien mes bouton dans la MDI, mais toujours pas de sheet, si tu as une idée...
J'ai mis en commentaire la hauteur de la microhelp car cette propriétét n'existe pas...
integer li_width, li_height li_width = This.WorkSpaceWidth() li_height = This.WorkSpaceHeight() li_height = li_height - (this.cb_gestion_des_droits.y + this.cb_gestion_des_droits.height) //li_height = li_height - this.MicroHelpHeight li_height = li_height + this.WorkspaceY() this.move( this.workspacex( ), this.cb_gestion_des_droits.y + this.cb_gestion_des_droits.height) This.resize( li_width, li_height) opensheet(w_menu_info, This,0, Original!)
Dernière modification par Pilou007 (13-01-2009 09:22:28)
Hors ligne
Bonjour,
Il suffit simplement :
this.move => mdi_1.move
this.resize => mdi_1.resize
Hors ligne
Salut Buck
Effectivement ça fonctionne mieux comme cela.....
Cela m'a permis aussi de comprendre ce qu'était la variable mdi_1 de type mdiclient déclarée lors de la création d'une fenêtre MDI..
Merci
Pilou
Hors ligne
Rien à rajouter sur la réponse apportée au problème. Mais quant au problème lui-même...
Je ne connais rien du contexte de ton application. Mais par ailleurs, je connais très peu (de mémoire : aucune) d'applications utilisant le modèle MDI et qui disposent des contrôles graphiques dans le cadre MDI.
Ne serait-il pas plus compréhensible pour les utilisateurs de transformer "cb_gestion_des_droits" en un bouton de barre d'outils qui ouvre soit une boîte de dialogue, soit une feuille MDI adéquate ?
Hors ligne
En fait c'est un peu plus compliqué que cela...
Je suis ici en mission pour plaquer un FW sur toutes les applications.... or certaine application démarre avec une MDI, d'autre avec une main, alors que toutes les appli sont SDI....
Donc en l'occurence, j'ai créé une MDI ancêtre et je la colle sur toutes les appli...
En plus celle qui avait une MDI de base, fait un opensheet dans l'open pour afficher une fenêtre d'info alors qu'une autre appli elle affiche des info dans des dw directement (c'est une main)....
De plus il y a une histoire de bouton de gestion de droit, il y a trois boutons size(0,0) et position (0,0) et je les ai mis dans la MDI ancêtre et ce sont eux qui me provoquaient ce phénomène sur l'appli qui a été construite avec une MDI de base... le fonctionnement avec les boutons est particulier, mais ça fonctionne comme ils le souhaitent...
Bref un peu compliqué tout cela, mais bon il faut que j'avance comme on me le demande, je ne vais donc pas tout refaire et essayer d'avoir un FW au mieux...
Merci
Hors ligne
FMolinas a écrit:
Mais par ailleurs, je connais très peu (de mémoire : aucune) d'applications utilisant le modèle MDI et qui disposent des contrôles graphiques dans le cadre MDI.
il me semblait que c'était une pratique à proscrire, d'autant que :
Keep in mind that if you add a control to the MDI frame you're responsible for resizing the MDI Client. Are you doing this already?
Hors ligne
Oui c'est vrai, mais il me semble que l'on a tous été débutant en pb....
Pour ma part je me rappelle du code que je faisait, je n'avait quasiment personne pour m'aider, en 2000 il n'existait pas pBàDonf , et donc ces appli sur lesquelles je travaille ont toutes été commencé il y a longtemp, par des débutant à l'époque, il y en a même une qui a été faite par des Roumains....
Bref parfois c'est le Whyyyyyyy!!!!!
Hors ligne
Pilou007 a écrit:
.. il y en a même une qui a été faite par des Roumains....
Bref parfois c'est le Whyyyyyyy!!!!!
Je confirme pour les roumains.... :-)
Hors ligne