ex7.pp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. program ex2;
  2. uses
  3. gdk,glib,gtk,strings;
  4. procedure destroy(widget : pGtkWidget ; data: pgpointer ); cdecl;
  5. begin
  6. gtk_main_quit();
  7. end;
  8. Const
  9. Inside : PChar ='Mouse is over label';
  10. OutSide : PChar ='Mouse is not over label';
  11. var
  12. OverLabel : Boolean;
  13. window, box1, box2, stackbox, label1, Label2 : PGtkWidget;
  14. Procedure ChangeLabel(P : PGtkWidget;
  15. Event : PGdkEventCrossing;
  16. Var Data : Boolean);cdecl;
  17. begin
  18. If Not Data then
  19. gtk_label_set_text(PGTKLABEL(Label2),Inside)
  20. else
  21. gtk_label_set_text(PGTKLABEL(Label2),Outside);
  22. Data := Not Data;
  23. end;
  24. begin
  25. gtk_init (@argc, @argv);
  26. window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
  27. stackbox:=gtk_vbox_new(TRUE,10);
  28. box1 := gtk_event_box_new();
  29. label1 := gtk_label_new(strnew('Move mouse over label'));
  30. gtk_container_add(GTK_CONTAINER(box1),label1);
  31. box2 := gtk_event_box_new();
  32. label2 := gtk_label_new(strNew(OutSide));
  33. gtk_container_add(GTK_CONTAINER(box2),label2);
  34. gtk_box_pack_start(GTK_BOX(stackbox),box1,TRUE,TRUE,0);
  35. gtk_box_pack_start(GTK_BOX(stackbox),box2,TRUE,TRUE,0);
  36. gtk_container_set_border_width(GTK_CONTAINER(Window),5);
  37. gtk_container_add(GTK_Container(window),stackbox);
  38. gtk_signal_connect(PGTKOBJECT (window), 'destroy',
  39. GTK_SIGNAL_FUNC (@destroy), NULL);
  40. overlabel:=False;
  41. gtk_signal_connect(PGTKOBJECT(box1),'enter_notify_event',
  42. GTK_SIGNAL_FUNC (@ChangeLabel), @Overlabel);
  43. gtk_signal_connect(PGTKOBJECT(box1),'leave_notify_event',
  44. GTK_SIGNAL_FUNC (@ChangeLabel), @Overlabel);
  45. gtk_widget_show_all (window);
  46. gtk_main ();
  47. end.