mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-27 07:30:13 +02:00
55 lines
1.6 KiB
ObjectPascal
55 lines
1.6 KiB
ObjectPascal
program ex2;
|
|
|
|
uses
|
|
gdk,glib,gtk,strings;
|
|
|
|
procedure destroy(widget : pGtkWidget ; data: pgpointer ); cdecl;
|
|
begin
|
|
gtk_main_quit();
|
|
end;
|
|
|
|
Const
|
|
Inside : PChar ='Mouse is over label';
|
|
OutSide : PChar ='Mouse is not over label';
|
|
|
|
var
|
|
OverLabel : Boolean;
|
|
window, box1, box2, stackbox, label1, Label2 : PGtkWidget;
|
|
|
|
Procedure ChangeLabel(P : PGtkWidget;
|
|
Event : PGdkEventCrossing;
|
|
Var Data : Boolean);cdecl;
|
|
|
|
begin
|
|
If Not Data then
|
|
gtk_label_set_text(PGTKLABEL(Label2),Inside)
|
|
else
|
|
gtk_label_set_text(PGTKLABEL(Label2),Outside);
|
|
Data := Not Data;
|
|
end;
|
|
|
|
begin
|
|
gtk_init (@argc, @argv);
|
|
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
stackbox:=gtk_vbox_new(TRUE,10);
|
|
box1 := gtk_event_box_new();
|
|
label1 := gtk_label_new(strnew('Move mouse over label'));
|
|
gtk_container_add(GTK_CONTAINER(box1),label1);
|
|
box2 := gtk_event_box_new();
|
|
label2 := gtk_label_new(strNew(OutSide));
|
|
gtk_container_add(GTK_CONTAINER(box2),label2);
|
|
gtk_box_pack_start(GTK_BOX(stackbox),box1,TRUE,TRUE,0);
|
|
gtk_box_pack_start(GTK_BOX(stackbox),box2,TRUE,TRUE,0);
|
|
gtk_container_set_border_width(GTK_CONTAINER(Window),5);
|
|
gtk_container_add(GTK_Container(window),stackbox);
|
|
gtk_signal_connect(PGTKOBJECT (window), 'destroy',
|
|
GTK_SIGNAL_FUNC (@destroy), NULL);
|
|
overlabel:=False;
|
|
gtk_signal_connect(PGTKOBJECT(box1),'enter_notify_event',
|
|
GTK_SIGNAL_FUNC (@ChangeLabel), @Overlabel);
|
|
gtk_signal_connect(PGTKOBJECT(box1),'leave_notify_event',
|
|
GTK_SIGNAL_FUNC (@ChangeLabel), @Overlabel);
|
|
gtk_widget_show_all (window);
|
|
gtk_main ();
|
|
end.
|