Programmation GTK2 en Pascal/GtkHBox
Programmation GTK2 en Pascal |
|
Présentation
[modifier | modifier le wikicode]Le contrôle GtkHBox est tout simplement une GtkBox
qui va nous permettre d'empiler les contrôles horizontalement.
Hiérarchie
[modifier | modifier le wikicode]Hiérarchie |
GObject └─GtkObject └─GtkWidget └─GtkContainer └─GtkBox └─GtkHBox |
Utilisation de base
[modifier | modifier le wikicode]Création d'une GtkHBox
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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) :
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 |