Programmation GTK2 en Pascal/GtkTable
Présentation.
Dans la famille des conteneurs, voilà sûrement le contrôle le plus intéressant. En effet il peut être parfois douloureux de placer correctement son interface avec l'utilisation de plusieurs codice_1. Le contrôle GtkTable est conçu pour résoudre ce problème car il utilise une grille invisible pour attacher les contrôles mais sans pour autant perdre la puissance de GTK+ avec le redimensionnement automatique.
Utilisation de base.
Au moment de la création de la codice_2, nous allons spécifier le nombre de lignes et de colonnes, puis y placer les éléments avec 3 principales caractéristiques :
Création d'une GtkTable.
La fonction de création est :
 function gtk_table_new(rows : guint; columns : guint; homogeneous : gboolean) : PGtkWidget;
Les paramètres codice_3 et codice_4 permettent de définir respectivement le nombre de lignes et de colonnes de la grille. Le paramètre codice_5 quant à lui définit, comme pour une codice_6, si tous les contrôles contenus dans la codice_2 utilisent un espace équivalent.
Insertion d'éléments.
La première fonction étudiée est :
 procedure gtk_table_attach(table : PGtkTable; child : PGtkWidget; 
 left_attach : guint; right_attach : guint; 
 top_attach : guint; bottom_attach : guint; 
 xoptions : TGtkAttachOptions; yoptions : TGtkAttachOptions; 
 xpadding : guint; ypadding : guint);
À première vue, cette fonction peut apparaître compliquée, mais elle est en réalité très simple. Le paramètre codice_8 représente le contrôle à attacher à la grille, les paramètres codice_9 et codice_10, les positions à gauche et à droite du contrôle et les paramètres codice_11 et codice_12, les positions supérieures et inférieures du contrôle.
 0 1 2 3 4 5
 0 ┌────┬────┬────┬────┬────┐
 1 ├────┼────┼────┴────┼────┤
 | | | | | Coordonnées du contrôle (Contr.)
 2 ├────┼────┤ Contr. ├────┤ left_attach = 2, right_attach = 4
 | | | | | top_attach = 1, bottom_attach = 3
 3 └────┴────┴─────────┴────┘
Les paramètres codice_13 et codice_14 permettent de spécifier respectivement la façon dont le contrôle réagit horizontalement et verticalement au redimensionnement de la codice_2. Ces paramètres peuvent prendre 3 valeurs (que l'on peut associer) :
Les deux derniers paramètres codice_16 et codice_17 définissent l'espace supplémentaire à ajouter aux bords du contrôle (à droite et à gauche pour le premier, au-dessus et en dessous pour le second).
La deuxième fonction est :
 procedure gtk_table_attach_defaults(table : PGtkTable; widget : PGtkWidget; 
 left_attach : guint; right_attach : guint; 
 top_attach : guint; bottom_attach : guint);
Ceci est la version simplifiée de la première fonction car elle définit automatiquement les paramètres codice_13 et codice_14 à GTK_EXPAND | GTK_FILL et les paramètres codice_16 et codice_17 à 0.
Modification de la table.
Il est possible de changer la taille de la grille après sa création à l'aide de cette fonction :
 procedure gtk_table_resize(table : PGtkTable; rows : guint; columns : guint);
Le paramètre codice_22 est la codice_2 à modifier, et les paramètres codice_3 et codice_4 les nouveaux nombres de lignes et de colonnes.
Ces deux fonctions permettent de changer l'espace d'une ligne ou d'une colonne spécifique :
 procedure gtk_table_set_row_spacing(table : PGtkTable; row : guint; spacing : guint);
 procedure gtk_table_set_col_spacing(table : PGtkTable; column : guint; spacing : guint);
La première définit l'espace autour d'une ligne tandis que la deuxième fait la même chose pour une colonne.
Celles-ci ont le même rôle que les deux précédentes fonctions, mais agissent sur l'ensemble de la codice_2 :
 procedure gtk_table_set_row_spacings(table : PGtkTable; spacing : guint);
 procedure gtk_table_set_col_spacings(table : PGtkTable; spacing : guint);
Et pour connaître ces espacements nous avons quatre fonctions différentes :
 function gtk_table_get_row_spacing(table : PGtkTable; row : guint) : guint;
 function gtk_table_get_col_spacing(table : PGtkTable; column : guint) : guint;
 function gtk_table_get_default_row_spacing(table : PGtkTable) : guint;
 function gtk_table_get_default_col_spacing(table : PGtkTable) : guint;
Les deux premières fonctions permettent de connaître l'espace entre la ligne numéro codice_27 (ou la colonne numéro codice_28) et sa suivante. Les deux autres fonctions quant à elles, renvoient la valeur par défaut des espacements, c'est à dire la valeur qui sera utilisé au prochain ajout d'un contrôle.
Programme exemple.
Nous allons utiliser le même exemple que dans le chapitre sur les codice_29, pour bien montrer la différence au niveau du code.
Voilà le fichier codice_30 :
 program gtk008;
 uses glib2, gtk2;
 var
 pFenetre : PGtkWidget;
 pTable : 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), 'Gtk008 : GtkTable');
 gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', GTK_SIGNAL_FUNC(@gtk_main_quit), NULL);
 // Création de la GtkTable (3 lignes et 2 colonnes) et ajout dans la fenêtre
 pTable := gtk_table_new(3, 2, TRUE);
 gtk_container_add(GTK_CONTAINER(pFenetre), pTable);
 // 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 GtkTable
 gtk_table_attach(GTK_TABLE(pTable), pBouton[1], 
 0, 2, 0, 1,
 GTK_EXPAND or GTK_FILL, GTK_EXPAND,
 0, 0);
 gtk_table_attach_defaults(GTK_TABLE(pTable), pBouton[2], 
 0, 1, 1, 2);
 gtk_table_attach(GTK_TABLE(pTable), pBouton[3], 
 1, 2, 1, 2,
 GTK_EXPAND, GTK_EXPAND or GTK_FILL,
 0, 0);
 gtk_table_attach_defaults(GTK_TABLE(pTable), pBouton[4], 
 0, 2, 2, 3);
 gtk_widget_show_all(pFenetre);
 gtk_main;
 end.
Voilà ce que donne l'exécution du programme codice_31 :
[[Image:Programmation GTK2 en Pascal - gtk008.png]]
[[Catégorie:Programmation GTK2 en Pascal (livre)]]

Enseignement du finnois
Enseignement de l'anglais/may, might, be allowed to

May et might sont des modaux, ils ne prennent pas de -s à la troisième personne du singulier, ils ne sont jamais suivis de to, la négation et l'interrogation se fait sans do.
May.
Il ne se contracte que très rarement en mayn't.
Demande de permission (formel).
Exemple : May I open the door ? "Puis-je ouvrir la porte ?"
 May I smoke here?
Eventualité.
Exemple : You may be right. "Tu as peut-être raison, il se peut que tu aies raison."
It may rain. "Il va peut-être pleuvoir."
Might.
La forme négative de might est mightn't.
Possibilité.
Might exprime des possibilités beaucoup moins fortes qu'avec may.
Exemple : He might come. "Il se pourrait qu'il vienne."
Discours indirect.
Au discours indirect on peut employer may au lieu de might.
Exemple : He said she might come. "Il a dit qu'elle allait peut-être venir."
To be allowed to.
May ne s'emploie qu'au présent, pour l'infinitif et les autres temps on emploie to be allowed to.
Exemple : She'd like to be allowed to go out. "Elle aimerait avoir la permission de sortir."
 You will not be allowed to stay here.
 I wasn't allowed to smoke. 
Retour Enseignement de l'anglais

Programmation GTK2 en Pascal/GtkNotebook