ll.pp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. program ll;
  2. uses xforms;
  3. {*** Forms and Objects ***}
  4. Type
  5. TFD_axypform = record
  6. axypform : PFL_FORM;
  7. xyplot : PFL_OBJECT;
  8. status : PFL_OBJECT;
  9. vdata : pointer;
  10. ldata : longint;
  11. end;
  12. PFD_axypform = ^TFD_axypform;
  13. var
  14. xypui : PFD_axypform;
  15. { callbacks for form axypform }
  16. Procedure xyplot_cb(ob : PFL_OBJECT; data : longint);cdecl;
  17. var
  18. x, y : double;
  19. i : Longint;
  20. temp,buf : string[64];
  21. begin
  22. fl_get_xyplot(ob, @x, @y, @i);
  23. if (i < 0) then exit;
  24. str (x,buf);
  25. str (y,temp);
  26. Buf:='X= '+Buf+' Y= '+temp+#0;
  27. fl_set_object_label(xypui^.status, @buf[1]);
  28. end;
  29. Procedure alwaysreturn_cb(ob : PFL_OBJECT; data : longint); cdecl;
  30. begin
  31. fl_set_xyplot_return(xypui^.xyplot, fl_get_button(ob));
  32. end;
  33. procedure interpolate_cb(ob : PFL_OBJECT; data : longint);cdecl;
  34. begin
  35. if fl_get_button(ob)=0 then
  36. fl_set_xyplot_interpolate(xypui^.xyplot, 0,2,0.2)
  37. else
  38. fl_set_xyplot_interpolate(xypui^.xyplot, 0,0,0.2);
  39. end;
  40. Procedure inspect_cb(ob : PFL_OBJECT; data :longint); cdecl;
  41. begin
  42. fl_set_xyplot_inspect(xypui^.xyplot, fl_get_button(ob));
  43. end;
  44. procedure notic_cb(ob : PFL_OBJECT; data :longint); cdecl;
  45. var notic : Longint;
  46. begin
  47. notic := fl_get_button(ob);
  48. if (notic)<>0 then
  49. begin
  50. fl_set_xyplot_xtics(xypui^.xyplot, -1, -1);
  51. fl_set_xyplot_ytics(xypui^.xyplot, -1, -1);
  52. end
  53. else
  54. begin
  55. fl_set_xyplot_xtics(xypui^.xyplot, 0, 0);
  56. fl_set_xyplot_ytics(xypui^.xyplot, 0, 0);
  57. end;
  58. end;
  59. Function create_form_axypform : PFD_axypform;
  60. var
  61. obj : PFL_OBJECT;
  62. fdui : PFD_axypform;
  63. begin
  64. new(fdui);
  65. fdui^.axypform := fl_bgn_form(FL_NO_BOX, 431, 301);
  66. obj := fl_add_box(FL_UP_BOX,0,0,431,301,'');
  67. obj := fl_add_xyplot(FL_ACTIVE_XYPLOT,20,50,285,235,'');
  68. fdui^.xyplot := obj;
  69. fl_set_object_boxtype(obj,FL_DOWN_BOX);
  70. fl_set_object_color(obj, FL_BLACK, FL_GREEN);
  71. fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE);
  72. fl_set_object_callback(obj,PFL_CALLBACKPTR(@xyplot_cb),0);
  73. obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,40,80,25,'AlwaysReturn');
  74. fl_set_object_color(obj,FL_COL1,FL_BLUE);
  75. fl_set_object_callback(obj,PFL_CALLBACKPTR(@alwaysreturn_cb),0);
  76. obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,65,80,25,'Interpolate');
  77. fl_set_object_color(obj,FL_COL1,FL_BLUE);
  78. fl_set_object_callback(obj,PFL_CALLBACKPTR(@interpolate_cb),0);
  79. obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,90,85,25,'InspectOnly');
  80. fl_set_object_color(obj,FL_COL1,FL_BLUE);
  81. fl_set_object_callback(obj,PFL_CALLBACKPTR(@inspect_cb),0);
  82. obj := fl_add_text(FL_NORMAL_TEXT,45,15,170,25,'');
  83. fdui^.status := obj;
  84. fl_set_object_boxtype(obj, FL_DOWN_BOX);
  85. obj := fl_add_button(FL_NORMAL_BUTTON,325,250,90,30,'Done');
  86. obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,120,85,25,'NoTics');
  87. fl_set_object_color(obj,FL_COL1,FL_BLUE);
  88. fl_set_object_callback(obj,PFL_CALLBACKPTR(@notic_cb),0);
  89. fl_end_form();
  90. create_form_axypform:=fdui;
  91. end;
  92. var
  93. x,y : array[0..24] of double;
  94. i : longint;
  95. begin
  96. fl_initialize(@argc, argv, 'FormDemo', nil, 0);
  97. xypui := create_form_axypform;
  98. { fill-in form initialization code }
  99. fl_set_object_dblbuffer(xypui^.status, 1);
  100. for i := 0 to 10 do
  101. begin
  102. x[i] := i;
  103. y[i] := i;
  104. end;
  105. fl_set_xyplot_data(xypui^.xyplot, x, y, 11, '','','');
  106. { show the first form }
  107. fl_show_form(xypui^.axypform,FL_PLACE_MOUSE,FL_TRANSIENT,'axypform');
  108. fl_do_forms();
  109. end.