2 сигнала:
- Код: Выделить всё
- function button_pressed(button : PGtkWidget; event: PGdkEvent;
 data : gpointer) : boolean; cdecl;
 begin
 if (event^._type = GDK_BUTTON_PRESS) then
 writeln('Кнопка нажата');
 button_pressed := true;
 end;
 
 function button_released(button : PGtkWidget; event : PGdkEvent;
 data : gpointer) : boolean; cdecl;
 begin
 if (event^._type = GDK_BUTTON_RELEASE) then
 writeln('Кнопка отжата');
 button_released := true;
 end;
Соединение с сигналами и отображение:
- Код: Выделить всё
- ...
 button := gtk_button_new_with_label('1');
 gtk_widget_add_events (button, GDK_BUTTON_PRESS_MASK
 or GDK_BUTTON_RELEASE_MASK);
 buttonbox := gtk_fixed_new();
 g_signal_connect(G_OBJECT(button), 'clicked',
 G_CALLBACK(@button_pressed), nil);
 g_signal_connect(G_OBJECT(button), 'released',
 G_CALLBACK(@button_released), nil);
 gtk_widget_set_size_request(button, 50, 30);
 gtk_fixed_put(GTK_FIXED(buttonbox), button, 100, 100);
 gtk_widget_show(button);
 gtk_container_set_border_width(GTK_CONTAINER(Window), 0);
 gtk_container_add(GTK_CONTAINER(Window), buttonbox);
 gtk_widget_show(buttonbox);
 ...
Ошибка:
An unhandled exception occurred at $000000000040998D:
EAccessViolation: Access violation
$000000000040998D



