invslider.pp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. program invslider;
  2. uses xforms;
  3. type
  4. TFD_inv = record
  5. inv : PFL_FORM;
  6. sl : array[0..2] of PFL_OBJECT;
  7. done : PFL_OBJECT;
  8. vdata : pointer;
  9. ldata : longint;
  10. end;
  11. PFD_inv=^TFD_inv;
  12. var ui : PFD_INV;
  13. procedure invert_it(ob : PFL_OBJECT; data : longint);cdecl;
  14. begin
  15. if (fl_get_button(ob)<>0) then
  16. begin
  17. fl_set_slider_bounds(ui^.sl[0], 1.0, 0.0);
  18. fl_set_slider_bounds(ui^.sl[1], 1.0, 0.0);
  19. fl_set_slider_bounds(ui^.sl[2], 1.0, 0.0);
  20. end
  21. else
  22. begin
  23. fl_set_slider_bounds(ui^.sl[0], 0.0, 1.0);
  24. fl_set_slider_bounds(ui^.sl[1], 0.0, 1.0);
  25. fl_set_slider_bounds(ui^.sl[2], 0.0, 1.0);
  26. end;
  27. end;
  28. function create_form_inv : PFD_inv;
  29. var
  30. obj : PFL_OBJECT ;
  31. fdui : PFD_inv;
  32. begin
  33. new(fdui);
  34. fdui^.inv := fl_bgn_form(FL_NO_BOX, 245, 280);
  35. obj := fl_add_box(FL_UP_BOX,0,0,245,280,'');
  36. obj := fl_add_valslider(FL_VERT_SLIDER,20,30,35,230,'');
  37. fdui^.sl[0] := obj;
  38. obj := fl_add_valslider(FL_VERT_FILL_SLIDER,65,30,35,230,'');
  39. fdui^.sl[1] := obj;
  40. obj := fl_add_valslider(FL_VERT_NICE_SLIDER,115,30,35,230,'');
  41. fdui^.sl[2] := obj;
  42. fl_set_object_boxtype(obj,FL_FLAT_BOX);
  43. fl_set_object_color(obj,FL_COL1,FL_BLUE);
  44. obj := fl_add_button(FL_RETURN_BUTTON,160,235,75,30,'Exit');
  45. fdui^.done := obj ;
  46. obj := fl_add_checkbutton(FL_PUSH_BUTTON,165,30,75,35,'Invert');
  47. fl_set_object_callback(obj,PFL_CALLBACKPTR(@invert_it),0);
  48. fl_end_form;
  49. create_form_inv:=fdui;
  50. end;
  51. begin
  52. fl_initialize(@argc, argv, 'FormDemo', nil, 0);
  53. ui := create_form_inv;
  54. fl_show_form(ui^.inv,FL_PLACE_CENTER,FL_TRANSIENT,'inv');
  55. while fl_do_forms <> ui^.done do;
  56. end.