Le Fox Toolkit


précédentsommairesuivant

III. Le positionnement des objets

Un soucis majeur de notre fenêtre précédente est le positionnement des objets dans notre fenêtre, ils se mettent simplement les uns en dessous des autres. Le Fox Toolkit met à notre disposition les concepts de conteneur vertical et conteneur horizontal.
Dans un conteneur vertical, les objets seront placés les uns en dessous des autres tandis que dans un conteneur horizontal, ils seront placés les uns à côté des autres.

III-A. Le conteneur vertical

 
Sélectionnez
 int styleFrame = LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y;
 int styleButton = FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y;
 
 FXVerticalFrame *vf1 = new FXVerticalFrame(this,styleFrame,0,0,0,0,0,0,0,0);
 FXButton *b1 = new FXButton( vf1, "b1" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b2 = new FXButton( vf1, "b2" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b3 = new FXButton( vf1, "b3" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b4 = new FXButton( vf1, "b4" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b5 = new FXButton( vf1, "b5" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);

J'ai créé un conteneur vertical nommé vf1, contenu lui-même par this, ici, la fenêtre. Et tous les autres objets, b1, b2, b3, b4 et b5 sont contenus par vf1.

Image non disponible
le conteneur vertical

III-B. Le conteneur horizontal

 
Sélectionnez
 int styleFrame = LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y;
 int styleButton = FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y;	
 
 FXHorizontalFrame *hf1 = new FXHorizontalFrame(this,styleFrame,0,0,0,0,0,0,0,0);
 FXButton *b1 = new FXButton( hf1, "b1" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b2 = new FXButton( hf1, "b2" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b3 = new FXButton( hf1, "b3" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b4 = new FXButton( hf1, "b4" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 FXButton *b5 = new FXButton( hf1, "b5" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);

Le principe est le même que pour le conteneur vertical, tous les objets sont contenus par hf1, qui est un conteneur horizontal.

Image non disponible
le conteneur horizontal

III-C. Là où ça devient vraiment intéressant

De par le modèle objet du Fox Toolkit, les conteneurs peuvent contenir des objets graphiques, mais ils sont eux aussi des objets graphiques. Un conteneur peut donc contenir .... des conteneurs. Démonstration :

 
Sélectionnez
 int styleFrame = LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y;
 int styleButton = FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT;
  
 FXVerticalFrame *vf1 = new FXVerticalFrame(this,styleFrame,0,0,0,0,0,0,0,0);
        
 FXButton *b1 = new FXButton( vf1, "b1" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
        
 FXHorizontalFrame *hf1 = new FXHorizontalFrame(vf1,styleFrame,0,0,0,0,0,0,0,0);
   FXButton *b2 = new FXButton( hf1, "b2" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
   FXButton *b3 = new FXButton( hf1, "b3" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
 
 FXHorizontalFrame *hf2 = new FXHorizontalFrame(vf1,styleFrame,0,0,0,0,0,0,0,0);
   FXButton *b4 = new FXButton( hf2, "b4" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);
   FXButton *b5 = new FXButton( hf2, "b5" ,NULL,NULL,0,styleButton,0,0,0,0,10,10,5,5);

Je créé un conteneur vertical noté vf1 dans lequel j'insère un bouton (b1) puis deux conteneurs horizontaux (hf1 et hf2) qui contiennent les 4 autres boutons.
On remarquera que le premier argument de chaque bouton et de chaque conteneur correspond à son propre conteneur, vf1, hf1, hf2 ou bien this.

Image non disponible
des conteneurs qui contiennent des conteneurs

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 khayyam Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.