Programmation GTK2 en Pascal/GtkHBox
Programmation GTK2 en Pascal |
|
Présentation
modifierLe contrôle GtkHBox est tout simplement une GtkBox
qui va nous permettre d'empiler les contrôles horizontalement.
Hiérarchie
modifierHiérarchie |
GObject └─GtkObject └─GtkWidget └─GtkContainer └─GtkBox └─GtkHBox |
Utilisation de base
modifierCréation d'une GtkHBox
modifierLa 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
modifierPour 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
modifierNous 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) :
Bouton | expand | fill |
n° 1 | True | True |
n° 2 | True | False |
n° 3 | False | False |
n° 4 | False | True |
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 ~ GtkBin — GtkHBox ~ GtkVBox ~ GtkTable ~ GtkNotebook |