cursor.pp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. Program cursor;
  2. { Cursor routines demo. }
  3. uses xforms;
  4. {$i bm1.xbm}
  5. {$i bm2.xbm}
  6. type
  7. TFD_cursor = record
  8. cursor : PFL_FORM;
  9. vdata : Pointer;
  10. ldata : Longint;
  11. end;
  12. PFD_Cursor = ^TFD_Cursor;
  13. var
  14. bitmapcur : Longint;
  15. function create_form_cursor : PFD_cursor; Forward;
  16. { callbacks for form cursor }
  17. procedure setcursor_cb(ob : PFL_Object; data : Longint);
  18. begin
  19. fl_set_cursor(FL_ObjWin(ob), data);
  20. end;
  21. procedure setbitmapcursor_cb(ob : PFL_OBJECT ; data : Longint);cdecl;
  22. begin
  23. if bitmapcur<>0 then
  24. bitmapcur := longint(fl_create_bitmap_cursor(Pchar(@bm1_bits), Pchar(@bm2_bits),
  25. 16, 16, 8 ,8 ));
  26. {bm1_width, bm1_height, bm1_width/2, bm1_height/2);}
  27. fl_set_cursor(FL_ObjWin(ob), bitmapcur);
  28. end;
  29. Procedure done_cb (ob : PFL_OBJECT; data : Longint);cdecl;
  30. begin
  31. Halt(0);
  32. end;
  33. Function create_form_cursor : PFD_cursor;
  34. var
  35. obj : PFL_OBJECT;
  36. fdui : PFD_cursor;
  37. begin
  38. new(fdui);
  39. fdui^.cursor := fl_bgn_form(FL_NO_BOX, 325, 175);
  40. obj := fl_add_box(FL_UP_BOX,0,0,325,175,'');
  41. obj := fl_add_frame(FL_EMBOSSED_FRAME,10,10,305,120,'');
  42. obj := fl_add_button(FL_NORMAL_BUTTON,20,20,65,30,'Hand');
  43. fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),XC_hand2);
  44. obj := fl_add_button(FL_NORMAL_BUTTON,250,140,60,25,'Done');
  45. fl_set_object_callback(obj,PFL_CALLBACkPTR(@done_cb),0);
  46. obj := fl_add_button(FL_NORMAL_BUTTON,95,20,65,30,'Watch');
  47. fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),XC_watch);
  48. obj := fl_add_button(FL_NORMAL_BUTTON,170,20,65,30,'Invisible');
  49. fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),FL_INVISIBLE_CURSOR);
  50. obj := fl_add_button(FL_NORMAL_BUTTON,90,70,140,50,'DefaultCursor');
  51. fl_set_button_shortcut(obj,'Dd#d',1);
  52. fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),FL_DEFAULT_CURSOR);
  53. obj := fl_add_button(FL_NORMAL_BUTTON,245,20,65,30,'BitmapCur');
  54. fl_set_object_callback(obj,PFL_CALLBACkPTR(@setbitmapcursor_cb),0);
  55. fl_end_form;
  56. create_form_cursor:= fdui;
  57. end;
  58. var fd_cursor : PFD_cursor ;
  59. Begin
  60. fl_set_border_width(-2);
  61. fl_initialize(@argc, argv, 'FormDemo', nil, 0);
  62. fd_cursor := create_form_cursor;
  63. { fill-in form initialization code }
  64. fl_show_form(fd_cursor^.cursor,FL_PLACE_CENTER,FL_FULLBORDER,'cursor');
  65. fl_do_forms;
  66. end.