group.pp 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. program group;
  2. uses xforms;
  3. {$i porsche.xpm}
  4. {$i nomail.xbm}
  5. {$i bm1.xbm}
  6. Const NGROUP = 4;
  7. type TFD_objsform = record
  8. objsform : PFL_Form;
  9. vdata : Pointer;
  10. ldata : longint;
  11. bitbutton,
  12. pixbutton,
  13. bit,
  14. pix,
  15. chart,
  16. quit,
  17. menu,
  18. choice,
  19. browser,
  20. xyplot : PFL_Object;
  21. button,group : array [0..4] of PFL_OBJECT;
  22. end;
  23. PFD_objsform = ^TFD_objsform;
  24. var fd_objsform : PFD_objsform;
  25. { callbacks for form objsform }
  26. procedure show_group(ob : PFL_OBJECT;data: longint);cdecl;
  27. var i : longint;
  28. begin
  29. for i := 0 to NGROUP do
  30. if i=data then
  31. fl_show_object(fd_objsform^.group[i])
  32. else
  33. fl_hide_object(fd_objsform^.group[i]);
  34. end;
  35. procedure init_gui(fd : PFD_objsform);
  36. const
  37. x : array[0..5] of real = ( 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 );
  38. y : array[0..5] of real = ( 5.5, 4.0, 4.5, 3.8, 4.0, 5.0 );
  39. labels: array[0..5] of pchar = ('Mon','Tue','Wed', 'Thur','Fri','Sat');
  40. var
  41. i : integer;
  42. begin
  43. fl_addto_menu(fd^.menu,'One'#8'F1|Two'#8'F2|Three'#8'F3|Four'#8'F4');
  44. fl_addto_choice(fd^.choice,'Option1|Option2|Option3');
  45. fl_set_pixmapbutton_data(fd^.pixbutton,porsche);
  46. fl_set_pixmap_data(fd^.pix, porsche);
  47. fl_set_bitmapbutton_data(fd^.bitbutton, bm1_width, bm1_height,pchar(@bm1_bits));
  48. fl_set_bitmap_data(fd^.bit, nomail_width, nomail_height, pchar(@nomail_bits));
  49. fl_set_browser_fontsize(fd^.browser,FL_NORMAL_SIZE);
  50. fl_addto_browser(fd^.browser,'browser line 1'#10'browser line 2');
  51. fl_addto_browser(fd^.browser,'browser line 3'#10'browser line 4');
  52. fl_addto_browser(fd^.browser,'browser line 5'#10'browser line 6');
  53. fl_addto_browser(fd^.browser,'browser line 7'#10'browser line 8');
  54. fl_addto_browser(fd^.browser,'browser line 9'#10'browser line 10');
  55. fl_addto_browser(fd^.browser,'browser line 11'#10'browser line 12');
  56. fl_addto_browser(fd^.browser,'browser line 13'#10'browser line 14');
  57. fl_addto_browser(fd^.browser,'browser line 15'#10'browser line 16');
  58. fl_addto_browser(fd^.browser,'browser line 17'#10'browser line 18');
  59. for i := 0 to 6 do
  60. fl_add_chart_value(fd^.chart,y[i],labels[i],i+1);
  61. fl_set_xyplot_data(fd^.xyplot,x,y,6,'','','');
  62. fl_add_xyplot_overlay(fd^.xyplot,1, x, y, 6, FL_RED);
  63. fl_add_xyplot_text(fd^.xyplot,2.5,5.2,'Weekly Summary',
  64. FL_ALIGN_CENTER,FL_BLUE);
  65. fl_add_xyplot_text(fd^.xyplot, 3, 3.85, '@-22^.', FL_ALIGN_TOP, FL_RED);
  66. fl_set_xyplot_overlay_type(fd^.xyplot,1,FL_NORMAL_XYPLOT);
  67. fl_set_xyplot_alphaxtics(fd^.xyplot,'Mon|Tue|Wed|Thu|Fri|Sat', nil);
  68. fl_set_xyplot_ytics(fd^.xyplot,-1,-1);
  69. fl_set_xyplot_linewidth(fd^.xyplot,0, 3);
  70. end;
  71. function create_form_objsform : PFD_objsform;
  72. var
  73. obj : PFL_OBJECT;
  74. fdui : PFD_objsform;
  75. old_bw : Longint;
  76. begin
  77. new(fdui);
  78. old_bw := fl_get_border_width;
  79. fl_set_border_width(-3);
  80. fdui^.objsform := fl_bgn_form(FL_NO_BOX, 456, 361);
  81. obj := fl_add_box(FL_FLAT_BOX,0,0,456,361,'');
  82. obj := fl_add_box(FL_UP_BOX,0,0,455,360,'');
  83. obj := fl_add_box(FL_UP_BOX,0,0,456,70,'');
  84. obj := fl_add_button(FL_RADIO_BUTTON,15,20,75,30,'Static');
  85. fdui^.button[0] := obj;
  86. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  87. fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
  88. fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),0);
  89. obj := fl_add_button(FL_RADIO_BUTTON,90,20,75,30,'Button');
  90. fdui^.button[1] := obj;
  91. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  92. fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
  93. fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),1);
  94. obj := fl_add_button(FL_RADIO_BUTTON,165,20,70,30,'Valuator');
  95. fdui^.button[2] := obj;
  96. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  97. fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
  98. fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),2);
  99. obj := fl_add_button(FL_RADIO_BUTTON,235,20,70,30,'Input');
  100. fdui^.button[3] := obj;
  101. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  102. fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
  103. fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),3);
  104. obj := fl_add_button(FL_RADIO_BUTTON,305,20,70,30,'Other');
  105. fdui^.button[4] := obj;
  106. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  107. fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
  108. fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),4);
  109. obj := fl_add_box(FL_UP_BOX,0,70,456,291,'');
  110. obj := fl_add_box(FL_DOWN_BOX,9,90,435,260,'');
  111. fdui^.group[2] := fl_bgn_group();
  112. obj := fl_add_text(FL_NORMAL_TEXT,260,140,80,30,'Text');
  113. fl_set_object_lalign(obj,FL_ALIGN_LEFT or FL_ALIGN_INSIDE);
  114. obj := fl_add_slider(FL_HOR_BROWSER_SLIDER,60,120,170,25,'');
  115. obj := fl_add_slider(FL_HOR_FILL_SLIDER,60,160,170,30,'');
  116. fl_set_slider_value(obj, 0.54);
  117. obj := fl_add_slider(FL_VERT_SLIDER,390,110,30,170,'');
  118. fl_set_slider_value(obj, 0.48);
  119. obj := fl_add_valslider(FL_VERT_SLIDER,350,110,30,170,'');
  120. obj := fl_add_dial(FL_FILL_DIAL,50,220,90,70,'');
  121. fl_set_object_color(obj,FL_COL1,FL_BLUE);
  122. obj := fl_add_positioner(FL_NORMAL_POSITIONER,150,210,120,100,'');
  123. obj := fl_add_counter(FL_NORMAL_COUNTER,300,300,130,30,'');
  124. fl_end_group();
  125. fdui^.group[1] := fl_bgn_group();
  126. obj := fl_add_bitmapbutton(FL_NORMAL_BUTTON,60,250,50,40,'');
  127. fdui^.bitbutton := obj;
  128. obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,85,120,80,80,'');
  129. fdui^.pixbutton := obj;
  130. obj := fl_add_button(FL_NORMAL_BUTTON,290,270,90,35,'Button');
  131. obj := fl_add_round3dbutton(FL_PUSH_BUTTON,260,95,60,40,'Round3DButton');
  132. fl_set_object_color(obj, FL_COL1, FL_MAGENTA);
  133. obj := fl_add_roundbutton(FL_PUSH_BUTTON,220,140,60,40,'RoundButton');
  134. obj := fl_add_checkbutton(FL_PUSH_BUTTON,190,230,50,40,'CheckButton');
  135. fl_set_object_color(obj,FL_COL1,FL_BLUE);
  136. obj := fl_add_lightbutton(FL_PUSH_BUTTON,290,200,100,30,'LightButton');
  137. obj := fl_add_button(FL_PUSH_BUTTON, 120, 290, 100, 35 ,'Button');
  138. fl_set_object_boxtype(obj, FL_ROUNDED3D_UPBOX);
  139. fl_end_group();
  140. fdui^.group[0] := fl_bgn_group();
  141. obj := fl_add_box(FL_UP_BOX,40,120,70,70,'A Box');
  142. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  143. fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
  144. obj := fl_add_bitmap(FL_NORMAL_BITMAP,30,220,80,70,'bitmap');
  145. fdui^.bit := obj;
  146. obj := fl_add_clock(FL_ANALOG_CLOCK,330,240,90,80,'');
  147. obj := fl_add_frame(FL_ENGRAVED_FRAME,130,120,80,70,'A Frame');
  148. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  149. fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
  150. obj := fl_add_pixmap(FL_NORMAL_PIXMAP,340,110,90,70,'pixmap');
  151. fdui^.pix := obj;
  152. obj := fl_add_chart(FL_PIE_CHART,160,210,130,110,'chart');
  153. fdui^.chart := obj;
  154. obj := fl_add_text(FL_NORMAL_TEXT,240,130,100,30,'Text stuff\nand more stuff');
  155. fl_set_object_lalign(obj,FL_ALIGN_CENTER or FL_ALIGN_INSIDE);
  156. fl_end_group();
  157. fdui^.group[3] := fl_bgn_group();
  158. obj := fl_add_input(FL_NORMAL_INPUT,140,120,150,30,'Input');
  159. obj := fl_add_input(FL_MULTILINE_INPUT,60,170,320,130,'');
  160. fl_end_group();
  161. obj := fl_add_button(FL_NORMAL_BUTTON,385,20,60,30,'Quit');
  162. fdui^.quit := obj;
  163. fdui^.group[4] := fl_bgn_group();
  164. obj := fl_add_menu(FL_PULLDOWN_MENU,190,110,40,19,'Menu');
  165. fdui^.menu := obj;
  166. fl_set_object_boxtype(obj,FL_FLAT_BOX);
  167. obj := fl_add_choice(FL_NORMAL_CHOICE,290,110,120,30,'');
  168. fdui^.choice := obj;
  169. obj := fl_add_browser(FL_NORMAL_BROWSER,30,140,140,150,'');
  170. fdui^.browser := obj;
  171. obj := fl_add_xyplot(FL_IMPULSE_XYPLOT,190,150,240,180,'');
  172. fdui^.xyplot := obj;
  173. fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
  174. fl_end_group();
  175. fl_end_form();
  176. fdui^.objsform^.fdui:=fdui;
  177. fl_set_border_width(old_bw);
  178. create_form_objsform := fdui;
  179. end;
  180. begin
  181. fl_initialize(@argc, argv, '', nil, 0);
  182. fd_objsform := create_form_objsform;
  183. init_gui(fd_objsform);
  184. { fill-in form initialization code }
  185. fl_set_button(fd_objsform^.button[0], 1);
  186. show_group(nil, 0);
  187. { show the first form }
  188. fl_show_form(fd_objsform^.objsform,FL_PLACE_CENTER,FL_FULLBORDER,'objsform');
  189. while (fl_do_forms() <> fd_objsform^.quit) do
  190. begin
  191. end;
  192. end.