browserall.pp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. { This is a demo that shows the different types of browsers. }
  2. uses xforms,strings;
  3. var
  4. form : PFL_FORM;
  5. br : array[0..3] of PFL_OBJECT;
  6. exitobj, readout : PFL_OBJECT;
  7. const
  8. bnames : array[0..3] of pchar =
  9. (
  10. 'NORMAL_BROWSER', 'SELECT_BROWSER', 'HOLD_BROWSER', 'MULTI_BROWSER'
  11. );
  12. procedure deselect(obj : PFL_OBJECT ; arg : longint);cdecl;
  13. var
  14. i : longint ;
  15. begin
  16. for i:=0 to 3 do
  17. fl_deselect_browser(br[i]);
  18. end;
  19. procedure set_size(obj : PFL_OBJECT; arg : longint);cdecl;
  20. var
  21. i : longint;
  22. begin
  23. for i:=0 to 3 do
  24. fl_set_browser_fontsize(br[i],arg);
  25. end;
  26. procedure set_style(obj : PFL_OBJECT; arg : longint);cdecl;
  27. var
  28. i : longint;
  29. begin
  30. for i:=0 to 3 do
  31. fl_set_browser_fontstyle(br[i], arg);
  32. end;
  33. procedure br_callback(ob : PFL_OBJECT; arg : longint);cdecl;
  34. var
  35. buf : string[255];
  36. const
  37. mb : array[0..3] of pchar = ('','left','middle','right');
  38. var i,b : longint;
  39. begin
  40. b:=fl_mouse_button;
  41. if (b < FL_SHORTCUT) then
  42. buf :='In '+strpas(bnames[arg]) +'['+strpas(mb[b])+']'#0
  43. else
  44. buf:='In '+strpas(bnames[arg])+#0;
  45. i := fl_get_browser(ob);
  46. if i>0 then
  47. begin
  48. buf:=buf+strpas(fl_get_browser_line(ob,i));
  49. buf:=buf+' was selected'#0
  50. end
  51. else
  52. begin
  53. buf:=buf+strpas(fl_get_browser_line(ob,-i));
  54. buf:=buf+' was deselected'#0
  55. end;
  56. fl_set_object_label(readout,@buf[1]);
  57. end;
  58. procedure create_form;
  59. var
  60. obj : PFL_OBJECT;
  61. begin
  62. form := fl_bgn_form(FL_UP_BOX,700,570);
  63. readout := fl_add_text(FL_NORMAL_TEXT,50,30,600,50,'');
  64. fl_set_object_lsize(readout,FL_LARGE_SIZE);
  65. fl_set_object_lalign(readout,FL_ALIGN_CENTER);
  66. fl_set_object_lstyle(readout,FL_BOLD_STYLE);
  67. fl_set_object_boxtype(readout,FL_UP_BOX);
  68. fl_set_object_color(readout,FL_MAGENTA,FL_MAGENTA);
  69. obj:= fl_add_browser(FL_NORMAL_BROWSER,20,120,150,290,bnames[0]);
  70. br[0] := obj ;
  71. fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 0);
  72. obj:= fl_add_browser(FL_SELECT_BROWSER,190,120,150,290,bnames[1]);
  73. br[1] := obj ;
  74. fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 1);
  75. obj := fl_add_browser(FL_HOLD_BROWSER,360,120,150,290,bnames[2]);
  76. br[2] := obj ;
  77. fl_set_object_color(obj,FL_COL1,FL_GREEN);
  78. fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 2);
  79. obj := fl_add_browser(FL_MULTI_BROWSER,530,120,150,290,bnames[3]);
  80. br[3] := obj;
  81. fl_set_object_color(br[3],FL_COL1,FL_CYAN);
  82. fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 3);
  83. obj := fl_add_button(FL_NORMAL_BUTTON,560,510,120,30,'Exit');
  84. exitobj := obj;
  85. obj := fl_add_button(FL_NORMAL_BUTTON,560,460,120,30,'Deselect');
  86. fl_set_object_callback(obj,PFL_CALLBACKPTR(@deselect),0);
  87. fl_bgn_group();
  88. obj := fl_add_lightbutton(FL_RADIO_BUTTON,20,500,100,30,'Tiny');
  89. fl_set_object_lsize(obj,FL_TINY_SIZE);
  90. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
  91. obj := fl_add_lightbutton(FL_RADIO_BUTTON,130,500,100,30,'Small');
  92. fl_set_object_lsize(obj,FL_SMALL_SIZE);
  93. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
  94. fl_set_button(obj,1);
  95. obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,500,100,30,'Normal');
  96. fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  97. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
  98. obj := fl_add_lightbutton(FL_RADIO_BUTTON,350,500,100,30,'Large');
  99. fl_set_object_lsize(obj,FL_LARGE_SIZE);
  100. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
  101. fl_end_group;
  102. fl_bgn_group;
  103. obj := fl_add_lightbutton(FL_RADIO_BUTTON,20,450,100,30,'Normal');
  104. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_NORMAL_STYLE);
  105. fl_set_button(obj,1);
  106. obj := fl_add_lightbutton(FL_RADIO_BUTTON,120,450,100,30,'Bold');
  107. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_BOLD_STYLE);
  108. obj := fl_add_lightbutton(FL_RADIO_BUTTON,220,450,100,30,'Italic');
  109. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_ITALIC_STYLE);
  110. obj := fl_add_lightbutton(FL_RADIO_BUTTON,320,450,100,30,'BoldItalic');
  111. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_BOLDITALIC_STYLE);
  112. obj := fl_add_lightbutton(FL_RADIO_BUTTON,420,450,100,30,'Fixed');
  113. fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_FIXED_STYLE);
  114. fl_end_group;
  115. fl_end_form;
  116. end;
  117. procedure fill_browsers;
  118. var
  119. i, j : longint;
  120. buf : string[128];
  121. begin
  122. for i:=0 to 3 do
  123. for j:=1 to 100 do
  124. begin
  125. if ( j = 5) then
  126. begin
  127. str(j,buf);
  128. buf:='@NLine with qb '+buf+#0;
  129. end
  130. else if ( j = 10) then
  131. buf:='@-'#0
  132. else if ( j = 40 ) then
  133. begin
  134. str(j,buf);
  135. buf:='@mLine with qb '+buf+#0;
  136. end
  137. else
  138. begin
  139. str(j,buf);
  140. buf:='Line with qb '+buf+#0;
  141. end;
  142. fl_add_browser_line(br[i],@buf[1]);
  143. end
  144. end;
  145. begin
  146. fl_initialize(@argc, argv, 'FormDemo', nil, 0);
  147. create_form;
  148. fill_browsers;
  149. fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,'All Browsers');
  150. fl_do_forms;
  151. fl_hide_form(form);
  152. end.