Présentation.
Le contrôle GtkStatusBar est une barre d'état qui peut avoir plusieurs utilités. Tout d'abord lorsqu'un programme est en train d'effectuer une action, elle peut servir à signaler à l'utilisateur ce que le programme fait. Elle peut aussi servir à expliquer l'utilité d'un bouton (ou d'un élément du menu).
Utilisation de base.
Création.
La création de ce contrôle est aussi simple que pour tous les autres contrôles. Il suffit d'utiliser cette fonction :
 function gtk_statusbar_new : PGtkWidget;
Identification.
Regardons tout d'abord comment fonctionne une codice_1. Les messages sont mis dans une pile, l'élément le plus haut de la pile étant affiché. Mais avant de pouvoir ajouter un message dans la pile, il faut que Gtk+ sache qui a envoyé le message. En effet pour la barre d'état, nous avons la possibilité de définir quelle partie (ou quel module) du programme a envoyé un message.
Donc avant de pouvoir insérer des messages, il faut créer un ou plusieurs identifiant suivant le cas avec cette fonction :
 function gtk_statusbar_get_context_id(statusbar : PGtkStatusbar; context_description : Pgchar) : guint;
Cette fonction va automatiquement ajouter un contexte, et renvoyer la valeur correspondante. Par la suite cet identifiant est à utiliser pour ajouter ou enlever des éléments à la pile.
Ajout de message.
Pour ajouter un élément, il n'y a qu'une seule fonction :
 function gtk_statusbar_push(statusbar : PGtkStatusbar; context_id : guint; text : Pgchar) : guint;
Le paramètre codice_2 est bien sûr la barre d'état dans laquelle nous voulons ajouter un message, le paramètre codice_3 la valeur correspondante au contexte qui a été créé et codice_4 le texte qu'il faut afficher dans la barre d'état.
Après l'appel de cette fonction, le message est automatiquement ajouté en haut de la pile et est affiché dans la barre d'état. La valeur de retour correspond à l'identifiant du message dans la pile qui peut être utile pour sa suppression.
Suppression d'un message.
Pour supprimer un message de la pile, nous avons cette fois deux fonctions différentes :
 procedure gtk_statusbar_pop(statusbar : PGtkStatusbar; context_id : guint);
 procedure gtk_statusbar_remove(statusbar : PGtkStatusbar; context_id : guint; message_id : guint);
La première fonction enlève l'élément le plus haut placé dans la pile provenant de la partie du programme ayant l'identifiant codice_3. Alors que la deuxième fonction enlève l'élément en fonction de son identifiant et celui de son contexte.
Programme exemple.
Nous allons construire une application comportant deux boutons et barre d'état. Le but de cette application et d'afficher un message dans la barre d'état lorsque la souris survole un des boutons.
Voilà le fichier codice_6 :
program gtk016;
uses glib2, gtk2;
var
 pBarreEtat : PGtkWidget;
procedure OnBtnAProposClick(ABtnAPropos : PGtkwidget; AData : pgpointer); cdecl;
var
 pDlgAPropos : PGtkWidget;
begin
 pDlgAPropos := gtk_message_dialog_new(GTK_WINDOW(AData),
 GTK_DIALOG_MODAL,
 GTK_MESSAGE_INFO,
 GTK_BUTTONS_OK,
 'Cours GTK+ 2.0'#13#10'GtkStatusbar'#13#10'http://fr.wikibooks.org');
 gtk_dialog_run(GTK_DIALOG(pDlgAPropos));
 gtk_widget_destroy(pDlgAPropos);
end;
procedure OnBtnQuitterEnter(ABtn : PGtkwidget; AData : pgpointer); cdecl;
begin
 // Ajout d'un message (en paramètre : identifiant de contexte) 
 gtk_statusbar_push(GTK_STATUSBAR(pBarreEtat), GUInt(AData), '<nowiki>Quitter l"application</nowiki>');
end;
procedure OnBtnAProposEnter(ABtn : PGtkwidget; AData : pgpointer); cdecl;
begin
 // Ajout d'un message (en paramètre : identifiant de contexte)
 gtk_statusbar_push(GTK_STATUSBAR(pBarreEtat), GUInt(AData), 'Informations');
end;
procedure OnBtnLeave(ABtn : PGtkwidget; AData : pgpointer); cdecl;
begin
 // Suppression d'un message (en paramètre : identifiant de contexte)
 gtk_statusbar_pop(GTK_STATUSBAR(pBarreEtat), GUInt(AData));
end;
var
 pFenetre : PGtkWidget;
 pVBox : PGtkWidget;
 pBtnAPropos : PGtkWidget;
 pBtnQuitter : PGtkWidget;
 IdContexte1 : GUInt;
 IdContexte2 : GUInt;
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), '<nowiki>Gtk016 : Barre d"état</nowiki>');
 gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', GTK_SIGNAL_FUNC(@gtk_main_quit), NULL);
 pVBox := gtk_vbox_new(FALSE, 5);
 gtk_container_add(GTK_CONTAINER(pFenetre), pVBox);
 pBtnQuitter := gtk_button_new_with_label('Quitter');
 gtk_box_pack_start(GTK_BOX(pVBox), pBtnQuitter, TRUE, FALSE, 5);
 g_signal_connect(pGTKOBJECT(pBtnQuitter), 'clicked', GTK_SIGNAL_FUNC(@gtk_main_quit), NULL);
 pBtnAPropos := gtk_button_new_with_label('À propos...');
 gtk_box_pack_start(GTK_BOX(pVBox), pBtnAPropos, TRUE, FALSE, 5);
 g_signal_connect(pGTKOBJECT(pBtnAPropos), 'clicked', GTK_SIGNAL_FUNC(@OnBtnAProposClick), NULL);
 // Création de la barre d'état
 pBarreEtat := gtk_statusbar_new;
 gtk_box_pack_end(GTK_BOX(pVBox), pBarreEtat, FALSE, FALSE, 0);
 // Création des contextes 
 IdContexte1 := gtk_statusbar_get_context_id(GTK_STATUSBAR(pBarreEtat), 'MsgQuitter');
 IdContexte2 := gtk_statusbar_get_context_id(GTK_STATUSBAR(pBarreEtat), 'MsgAPropos');
 // Détection du passage de la souris
 g_signal_connect(pGTKOBJECT(pBtnQuitter), 'enter', GTK_SIGNAL_FUNC(@OnBtnQuitterEnter),
 PGPointer(IdContexte1));
 g_signal_connect(pGTKOBJECT(pBtnAPropos), 'enter', GTK_SIGNAL_FUNC(@OnBtnAProposEnter),
 PGPointer(IdContexte2));
 g_signal_connect(pGTKOBJECT(pBtnQuitter), 'leave', GTK_SIGNAL_FUNC(@OnBtnLeave),
 PGPointer(IdContexte1));
 g_signal_connect(pGTKOBJECT(pBtnAPropos), 'leave', GTK_SIGNAL_FUNC(@OnBtnLeave),
 PGPointer(IdContexte2));
 gtk_widget_show_all(pFenetre);
 gtk_main;
end.
Voilà ce que donne l'exécution du programme codice_7 :
Avec la souris au dessus du premier bouton (on peut noter le changement de couleur du bouton) :
Puis du deuxième bouton :

Enseignement de l'allemand/Niveau 1/Leçon 6

Les adjectifs possessifs.
Exemple : Mein Vater wohnt in Deutschland. "Mon père habite en Allemagne."
Ihr Bruder kommt aus Hamburg. "Son frère (à elle) vient de Hambourg."
Conjugaison : le prétérit des verbes forts.
Liens vers : Niveau 1

Bambara/Pronoms
voici les correspondances des pronoms en bambara, la deuxième forme est la forme emphatique :

Enseignement de l'allemand/Niveau 1/Leçon 4/Test

L'heure.
Donnez les heures suivantes en allemand :
Solutions.
L'heure.
Liens vers : Niveau 1

Programmation GTK2 en Pascal/GtkProgressBar