Programmation GTK2 en Pascal/GtkContainer

Un livre de Wikilivres.
Programmation GTK2 en Pascal

Présentation[modifier | modifier le wikicode]

Le contrôle GtkContainer est un contrôle de base qui va nous permettre d'insérer un ou plusieurs contrôle dans un autre contrôle.

En effet si l'on veut insérer du texte dans une fenêtre, il va bien falloir insérer le GtkLabel quelque part. C'est là que l'on s'aperçoit que le contrôle GtkWindow dérive du contrôle GtkContainer et que l'on va pouvoir insérer le texte dans la fenêtre.

Hiérarchie[modifier | modifier le wikicode]

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

Utilisation de base[modifier | modifier le wikicode]

Le contrôle GtkContainer n'est pas utilisé en tant que tel mais plutôt au travers d'autres contrôles qui en dérivent. Par exemple, les GtkHBox, GtkVBox, GtkWindow, etc.

Ajout et suppression d'éléments[modifier | modifier le wikicode]

La fonction pour ajouter un élément à un GtkContainer est très souvent utilisée mais elle est aussi très simple d'utilisation :

procedure gtk_container_add(container : PGtkContainer; widget : PGtkWidget); 

Le paramètre container est le contrôle parent dans lequel on veut insérer le contrôle enfant qui vient en deuxième paramètre. Le premier paramètre demande un contrôle du type GtkContainer, il est très probable que le contrôle parent ne soit pas de ce type là, mais d'une classe fille. Il faudra donc utiliser la fonction GTK_CONTAINER().

Pour la suppression c'est aussi simple, il faut utiliser la fonction :

procedure gtk_container_remove(container : PGtkContainer; widget : PGtkWidget);

Attention, avec cette fonction le contrôle widget va être détruit.

Espacement[modifier | modifier le wikicode]

Avec le contrôle GtkContainer, il existe la possibilité de laisser un espace minimum entre le bord du contrôle parent et le bord du contrôle enfant. Cela est rendu possible grâce à cette fonction :

procedure gtk_container_set_border_width(container : PGtkContainer; border_width : guint);

Le paramètre border_width correspond à l'espacement minimum.

Et pour connaître la valeur de cet espacement, il y a la fonction :

function gtk_container_get_border_width(container : PGtkContainer) : guint;

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