mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 08:31:49 +01: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.
 | 
