Programmation GTK2 en Pascal/GtkContainer

Programmation GTK2 en Pascal

Présentation

modifier

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
Hiérarchie
GObject
  └─GtkObject
      └─GtkWidget
          └─GtkContainer

Utilisation de base

modifier

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

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

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