< Programmation GTK2 en Pascal
Programmation GTK2 en Pascal

Présentation

Le contrôle GtkHBox est tout simplement une GtkBox qui va nous permettre d'empiler les contrôles horizontalement.

Hiérarchie

Hiérarchie
GObject
  └─GtkObject
      └─GtkWidget
          └─GtkContainer
              └─GtkBox
                  └─GtkHBox

Utilisation de base

Création d'une GtkHBox

La création d'une GtkHBox se fait tout simplement à l'aide de l'unique fonction disponible pour ce contrôle :

function gtk_hbox_new(homogeneous : gboolean; spacing : gint) : PGtkWidget;

Le paramètre homogeneous définit si tous les contrôles contenus dans la GtkHBox utilisent un espace équivalent. C'est à dire que si ce paramètre est à TRUE, la zone d'affichage de la GtkHBox sera divisée en x colonnes de taille égale (x étant le nombre de contrôles contenus).

Le paramètre spacing permet de définir l'espacement entre chacun des contrôles contenus.

Ajout d'un contrôle

Pour ajouter un contrôle dans une GtkHBox, il faut utiliser les fonctions disponibles pour le contrôle GtkBox. Cependant, il est nécessaire de savoir que le début d'une GtkHBox est à gauche et que sa fin est à droite.

Programme exemple

Nous allons simplement insérer quatre boutons dans une GtkHBox.

Voilà le fichier gtk006.pas :

program gtk006;

uses glib2, gtk2;

var
  pFenetre : PGtkWidget;
  pHBox    : PGtkWidget;
  pBouton  : array [1..4] of PGtkWidget;
begin
  gtk_init(@argc, @argv);
  pFenetre := gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_position(GTK_WINDOW(pFenetre), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(pFenetre), 320, 200);
  gtk_window_set_title(GTK_WINDOW(pFenetre), 'Gtk006 : GtkHBox');
  gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', GTK_SIGNAL_FUNC(@gtk_main_quit), NULL);

  // Création de la GtkHBox et ajout dans la fenêtre
  pHBox := gtk_hbox_new(FALSE, 0);
  gtk_container_add(GTK_CONTAINER(pFenetre), pHBox);

  // Création des boutons
  pBouton[1] := gtk_button_new_with_label('Bouton 1');
  pBouton[2] := gtk_button_new_with_label('Bouton 2');
  pBouton[3] := gtk_button_new_with_label('Bouton 3');
  pBouton[4] := gtk_button_new_with_label('Bouton 4');

  // Ajout des boutons dans la GtkHBox 
  gtk_box_pack_start(GTK_BOX(pHBox), pBouton[1], TRUE, TRUE, 0);
  gtk_box_pack_start(GTK_BOX(pHBox), pBouton[2], TRUE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(pHBox), pBouton[3], FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(pHBox), pBouton[4], FALSE, TRUE, 0);

  gtk_widget_show_all(pFenetre);
  gtk_main;
end.

Voilà ce que donne l'exécution du programme gtk006 :

Récapitulatif des paramètres de gtk_box_pack_start pour chaque bouton (La boîte n'est pas homogène) :

Boutonexpandfill
n° 1TrueTrue
n° 2TrueFalse
n° 3FalseFalse
n° 4FalseTrue

Rappel : Quand expand n'est pas positionné, fill n'a aucun effet.

La même fenêtre après redimensionnement « à la main » :

Conteneurs : GtkContainer ~ GtkBox ~ GtkBinGtkHBox ~ GtkVBox ~ GtkTable ~ GtkNotebook

Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.