Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Comment remplir un cadre?

Envoyé par : windu.2b

Date : 30/09/2005 18:12

Bonjour, Ma question doit le montrer mais c'est toujours mieux en le disant: je suis un noob en XUL... Je désire apprendre cette technologie! Et je voudrais donc savoir s'il est possible de remplir un cadre (dison un groupbox), à partir d'un clic sur une ligne d'un tree (que j'ai deja réussi à remplir via un RDF et PHP/SQL). Ce que je désire faire est assez simple: lorsque je clique sur une ligne (en fait, un nom dans la liste) je voudrais que le groupbox se remplisse avec les informations concernant cette personne (nom, prénom, adresse...), informations que je récupère depuis 1 BDD MySQL via un code PHP (ca, je sais faire sans pb!) Donc je voulais savoir si le tuto XUL expliquait ca (j'ai pas trouvé en tout cas) ou bien si vous pouviez m'expliquer la manip a faire... Merci

# Re: Comment remplir un cadre?

Envoyé par : NewPxul

Date : 03/10/2005 09:36

Bonjour, C'est une bone question, je me la pose aussi sous cette forme, comment remplir un formulaire à partir d'un double clic sur une ligne d'un "tree". Dans "l'autre sens" cela fonctionne bien, j'arrive à ouvrir une boite de dialogue avec des "textbox" "checkbox" "radio buton" etc ... et j'enregistre le contenu du formulaire dans la base de donnée. Mais tout comme vous je patauge un peu dans ce tutorial pour comprendre comment je pourrai peupler mon formulaire à partir d'un double clic sur une ligne d'un "tree". Si quelqu'un connait la méthode à employer, merci de nous la faire partager.

# Re: Comment remplir un cadre?

Envoyé par : NewPxul

Date : 03/10/2005 19:33

J'ai commencé à tester une idée qui me semble intéressante mais je bute sur la syntaxe de l'élément <iframe id=" " sr="" .../> je m'explique:

Dans le "tree" on peut récupérer l'index de la ligne courante avec une fonction: (comme expliqué dans le tutorial)

var rowIndex = tree.currentIndex;
if(rowIndex == -1)
{
  alert("Please select a line from the list");
   return;
}

Maintenant pour obtenir le prénom de cette ligne du "tree" tu l'obtiens avec la fonction:

var CurrentPrenom = tree.view.getCellText( rowIndex ,"PRENOM" );

à partir de là on peut appeler une nouvelle fenêtre qui contient juste un cadre (groupbox) et une page dedans (iframe) Cette page est créée par une nouvelle requête en PHP avec le "CurrentPrenom" comme argument ou une autre ID qui précise la ligne. exemple:

var w = window.open("chrome://..../win2.xul",CurrentPrenom,"chrome,resizable");

et dans cette fenêtre on peut afficher la page:

<window   ....  >
 <vbox flex="1">
  <hbox flex="1">
    <groupbox orient="horizontal" flex="1">
    <caption label="detail de la fiche"/>
    <iframe id="content-body"
            src="http://..../script.php?PRENOM=window.argument[1];"
            flex="1">
    </iframe>
   </groupbox>
  </hbox>
</window>

Mais la syntaxe: src="http://..../script.php?PRENOM=window.argument1;" ne fontionne pas aussi simplement. Là je veux bien un peu d'aide pour savoir comment on peut passer le contenu d'une variable, à l'argument src="..." de l'objet <iframe> ...</iframe>

merci

# Re: Comment remplir un cadre?

Envoyé par : NewPxul

Date : 05/10/2005 12:21

Bonjour,

Décidement, je patauge toujours autant avec le contenu du composant: <iframe>, j'ai essayé le code suivant comme pour le composant <tree> mais cela ne fonctionne pas. Si quelqu'un a une idée ......

mon code pour le composant iframe c'est:

<window   ....blabla....  >
 <vbox flex="1">
 <hbox flex="1">
   <groupbox orient="horizontal" flex="1">
   <caption label="Detail de la fiche"/>
   <iframe id="iframe-01"
           src="about:blank"
           flex="1">
   </iframe>
  </groupbox>
  </hbox>
</window>

et le code de la fonction Javascript pour changer l'attribut src c'est:

function GetNewFrameURL()
 {
   var val1 = this.name;
   var dsUrl =  "http://...scrip.php?Fiche=";
   var CurrentIframe = document.getElementById("iframe-01");
   CurrentIframe.setAttribute('scr', dsUrl + val1 );
 }

Mais l'appel de la fonction GetNewFrameURL() ne modifie pas le contenu du composant <iframe> Je continue de chercher dans les TUT !

# Re: Comment remplir un cadre?

Envoyé par : chBok

Date : 06/10/2005 22:23

La syntaxe que tu utilises est bonne, mais je te signale que tu as écrit scr au lieu de src

CurrentIframe.setAttribute('src', dsUrl + val1 );

C'est peut être ca le problème. Pense à vérifier les messages d'erreurs dans la console javascript, ou mieux, d'ajouter un bloc :

try {
  ...script...
catch(e) { alert(e) }

par exemple

# Re: Comment remplir un cadre?

Envoyé par : NewPxul

Date : 07/10/2005 18:18

Effectivement, c'était juste la confusion du src et du scr merci !!! J'utilise toujours la console javascript, mais je vais appliquer strictement tes conseils pour la gestions des exceptions, surtout que mon code javascript commence à être important.

# Re: Comment remplir un cadre?

Envoyé par : windu.2b

Date : 08/10/2005 18:39

@NewPxul: je voulais savoir... Est-ce que ton code fonctionne? Maintenant que tu sembles avoir corrigé l'erreur indiquée par chBok, tu arrives donc à récupérer des informations par simple (double-)clic sur une ligne d'un Tree (et ensuite d'afficher ca dans un groupbox par ex.)?

# Re: Comment remplir un cadre?

Envoyé par : NewPxul

Date : 10/10/2005 10:55

Oui, mon code fonctionne, mais ce n'est peut-être pas le plus simple pour ce que tu veux faire. Mais voici les réferences sur lesquelles tu peux t'appuyer.

1. Pour un début je me suis pas encore lancé dans la capture d'un (double-clic) de souris, j'ai utilisé simplement la fonction: onselect" ..."

 <tree id="liste01" onselect="AfficherLaFiche();" flags="dont-build-content" ref="urn:data:row" datasources="rdf:null">

Tu trouveras cela dans le TUT à la page: http://xulplanet.com/testcases/example-(..)

Après si tu veux récupérer tous les éléments de la ligne un par un, dans la fonction AfficherLaFiche() tu peux utiliser le coder du début:

var rowIndex = tree.currentIndex;
if(rowIndex == -1)
{
  alert("Please select a line from the list");
  return;
}
var CurrentPrenom = tree.view.getCellText( rowIndex ,"PRENOM" );
var CurrentNom = tree.view.getCellText( rowIndex ,"NOM" );
var CurrentNom = tree.view.getCellText( rowIndex ,"ADRESSE" );

après j'ai mis un composant <iframe> dans le composant <groupbox> et j'écris dedans. Cependant, dans le cas précis de mon appli, il y a beaucoup d'attributs à afficher, et il ne sont pas tous dans la ligne du "tree", aussi plutôt que de récupérer tous les éléments un par un, j'appel un autre script PHP qui me retourne une page HTML avec toutes les infos, et j'affiche cette page dans le composant <iframe> d'ou la fonction pour modifier l'attribut "src" du composant <iframe>

Je touve aussi que l'application MAB est un bon exemple, qui doit ressembler un peu à ce que tu souhaite programmer.

http://mab.mozdev.org/

Je pense qu'on peut aussi faire pas mal de chose avec le composant: <deck> , je ne le connais pas particulièrement mais regarde le TU:

http://xulfr.org/wiki/Reference/Xul/deck

voilà, je suis loin d'avoir tout compris en XUL mais je trouve cela formidable pour développer de petites applis et je t'encourage dans tes développements.

# Re: Comment remplir un cadre?

Envoyé par : windu.2b

Date : 10/10/2005 15:29

En effet, ca correspond pas mal à ce que je cherche à faire...J'ai testé (en partie) le code que tu montres (la partie "récupération de la ligne du tree") Au fait, pour le double clic, il s'agit de "dblclick"

Me reste plus qu'à tester l'appel du script PHP pour récupérer toutes les données qui m'intéressent (j'avais déjà jeté un oeil dans le code de MAB... mais c'est 'achement complexe quand même!)

Sinon le deck pourrait m'être utile en effet! Merci pour l'info ;-)

# Re: Comment remplir un cadre?

Envoyé par : mainman

Date : 12/10/2005 11:31

Salut,

Je fais actuellement une appli Mozilla (avec PHP - génération RDF depuis MySQL - XMLRPC) et beaucoup de ses fonctionnalités sont basées sur le même principe que ce que tu cherches à obtenir.

Lors d'un événement sur un tree, je vais chercher un RDF que je parcours avec XPCOM et dont j'extrais les infos pour les mettre dans d'autres widget de l'appli (textbox menulist radiogroup ...).

Pour cela reporte toi à

Et là, on peut alors récupérer des infos précédemment mises dans le tree mais aussi d'autres info liés directement ou indirectement (arcs) à la ligne du tree.

C'est pas forcément hyper rapide, mais c'est très efficace.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.