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