Les sélections sont des fenêtres de dialogue souvent utilisées dans des applications pour sélectionner différentes choses : un fichier, une couleur, etc. Gtk+ en met à disposition un certain nombre, parmi ceux-ci nous verrons :
Il existe également la sélection d'une police de caractères.

Programmation GTK2 en Pascal/GtkFileSelection

Présentation.
Le contrôle GtkFileSelection est une boîte de dialogue qui permet de demander à l'utilisateur de sélectionner un fichier particulier. Ce contrôle ne s'occupe de la récupération du nom du fichier.
Utilisation de base.
Création.
La fonction de création est simple :
 function gtk_file_selection_new(title : Pgchar) : PGtkWidget;
Le paramètre codice_1 est le titre de votre boîte de dialogue : vous pouvez ainsi l'appeler suivant vos besoins « Ouvrir... », « Sélectionner un fichier...», etc.
Affichage.
Puisque ce nouveau contrôle dérive directement du contrôle codice_2, il nous suffit d'utiliser la fonction :
 function gtk_dialog_run(dialog : PGtkDialog) : gint;
La valeur de retour est importante pour savoir si l'utilisateur a sélectionné un nom de fichier ou pas.
Récupération du nom de fichier.
Encore une fois, nous allons utiliser les propriétés du contrôle codice_2. Si la valeur de retour de codice_4 est codice_5, alors un nom de fichier a été sélectionné, et on peut donc récupérer sa valeur avec la fonction suivante :
 function gtk_file_selection_get_filename(filesel : PGtkFileSelection) : Pgchar;
Le paramètre codice_6 doit être utilisé avec la fonction de conversion GTK_FILE_SELECTION. Attention, la valeur de retour n'est pas modifiable.
Pour toutes les autres valeurs de retour de la fonction codice_4, cette fonction renverra le chemin complet du répertoire affiché au moment où l'utilisateur a annulé.
Initialisation du nom de fichier.
Un nom de fichier peut être donné à la boîte de dialogue avant son affichage. Cela se fait avec la fonction :
 procedure gtk_file_selection_set_filename(filesel : PGtkFileSelection; filename : Pgchar);
Programme exemple.
Nous allons créer une fenêtre avec un bouton nous permettant d'ouvrir une codice_8. Une fois le fichier sélectionné, nous affichons son chemin dans un label de la fenêtre. 
Voici le fichier codice_9 :
 program gtk048;
 uses glib2, gtk2;
 procedure gtk_toolbar_insert(toolbar : PGtkToolbar; item : PGtkToolItem; pos : gint); cdecl;
 external gtklib name 'gtk_toolbar_insert';
 procedure OnToggleBtn(APWidget : PGtkwidget; AData : pgpointer); cdecl;
 var
 pSelectionFichier : PGtkwidget;
 NomFichier : PGChar;
 begin
 // Création de la fenêtre de sélection
 pSelectionFichier := gtk_file_selection_new('Ouvrir...');
 // On limite les actions à cette fenêtre
 gtk_window_set_modal(GTK_WINDOW(pSelectionFichier), TRUE);
 // Affichage fenêtre
 case gtk_dialog_run(GTK_DIALOG(pSelectionFichier)) of
 GTK_RESPONSE_OK : begin
 // Récuperation du chemin
 NomFichier := gtk_file_selection_get_filename(GTK_FILE_SELECTION(pSelectionFichier));
 gtk_label_set_label(GTK_LABEL(AData), NomFichier);
 end;
 end;
 gtk_widget_destroy(pSelectionFichier);
 end;
 var
 pFenetre : PGtkWidget;
 pVBox : PGtkWidget;
 pBarreOutils : PGtkWidget;
 pBouton : PGtkToolItem;
 pLabel : 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), 'Gtk048 : Sélection de fichiers');
 gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', G_CALLBACK(@gtk_main_quit), NULL);
 // Création de la GtkVBox
 pVBox := gtk_vbox_new(FALSE, 5);
 gtk_container_add(GTK_CONTAINER(pFenetre), pVBox);
 // Création de la barre d'outils
 pBarreOutils := gtk_toolbar_new;
 gtk_box_pack_start(GTK_BOX(pVBox), pBarreOutils, FALSE, FALSE, 0);
 // Création du bouton ouvrir
 pBouton := gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
 gtk_toolbar_insert(GTK_TOOLBAR(pBarreOutils), pBouton, -1);
 // Création du label
 pLabel := gtk_label_new('Aucun fichier sélectionné.');
 gtk_box_pack_start(GTK_BOX(pVBox), pLabel, FALSE, FALSE, 0);
 // Signal du bouton
 gtk_signal_connect(pGTKOBJECT(pBouton), 'clicked', G_CALLBACK(@OnToggleBtn), pLabel);
 gtk_widget_show_all(pFenetre);
 gtk_main;
 end.
Voila ce que donne l'exécution du programme gtk048 :
La fenêtre principale s'affiche et on clique sur le bouton « Ouvrir », voilà la fenêtre de dialogue qui s'ouvre :