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 |

