USEIBOX.PAS 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. unit UseIbox;
  2. {$S-}
  3. {$R IB}
  4. interface
  5. uses WinTypes, WinProcs, WinDos, Strings;
  6. const LB_MAX=50;
  7. function DoInpBox(Window: HWnd;
  8. var RezData:string;Question: String): Boolean;
  9. function DoListBox(Window: HWnd;
  10. var REZINT:integer;
  11. Question: String): Boolean;
  12. function CreBox(Window: HWnd;
  13. var RezINT:integer;Question:String;var theBoxproc:longint;
  14. var thewin:word): Boolean;
  15. function DelBox(theBoxProc:longint; thewin:word): Boolean;
  16. function CreSTBox(Window: HWnd;
  17. var RezINT:integer;Question:String): Boolean;
  18. procedure SetSTBox(i:longint);
  19. function DelSTBox: Boolean;
  20. var LB_ARR:array[1..LB_MAX]of pchar;
  21. LB_SIZE:integer;
  22. implementation
  23. const id_Edit=101;
  24. id_Que =102;
  25. id_Quel=101;
  26. id_list=103;
  27. var
  28. GQuestion,GRezData: array[0..80]of Char;
  29. function InputDialog(Dialog: HWnd; Message, WParam: Word;
  30. LParam: longint): Bool; export;
  31. begin
  32. InputDialog := True;
  33. case Message of
  34. wm_InitDialog:
  35. begin
  36. SendDlgItemMessage(Dialog, id_Edit, em_LimitText, 60, 0);
  37. SetDlgItemText(dialog,id_Que,GQuestion);
  38. SetDlgItemText(dialog,id_Edit,GRezData);
  39. SetFocus(GetDlgItem(Dialog, id_Edit));
  40. Exit;
  41. end;
  42. wm_Command:
  43. case WParam of
  44. id_Ok:
  45. begin
  46. GetDlgItemText(Dialog, id_Edit, GRezData, 61);
  47. EndDialog(Dialog, 1);
  48. Exit;
  49. end;
  50. id_Cancel:
  51. begin
  52. EndDialog(Dialog, 0);
  53. Exit;
  54. end;
  55. end;
  56. end;
  57. InputDialog := False;
  58. end;
  59. function DoInpBox(Window: HWnd;
  60. var RezData:string;Question:String): Boolean;
  61. var
  62. DialogProc: TFarProc;
  63. begin
  64. StrPcopy(GRezData,RezData);
  65. StrPcopy(GQuestion,Question);
  66. DialogProc := MakeProcInstance(@InputDialog, HInstance);
  67. DoInpBox := DialogBox(HInstance, 'IBOX', Window, DialogProc) = 1;
  68. FreeProcInstance(DialogProc);
  69. RezData:=StrPas(GRezData);
  70. end;
  71. {*********************** LIST DIALOG **********************}
  72. var ANS:integer;
  73. function ListDialog(Dialog: HWnd; Message, WParam: Word;
  74. LParam: longint): Bool; export;
  75. var i:integer;
  76. begin
  77. ListDialog := True;
  78. case Message of
  79. wm_InitDialog:
  80. begin
  81. SetDlgItemText(dialog,id_QueL,GQuestion);
  82. for i:=1 to LB_SIZE do begin
  83. SendDlgItemMessage(Dialog, id_List, lb_addstring,0,longint(LB_ARR[i]));
  84. end;
  85. SendDlgItemMessage(Dialog, id_List, lb_setcursel,0,0);
  86. SetFocus(GetDlgItem(Dialog, id_List));
  87. Exit;
  88. end;
  89. wm_Command:
  90. case WParam of
  91. id_Ok:
  92. begin
  93. { GetDlgItemText(Dialog, id_Edit, GRezData, 61); }
  94. ANS:=SendDlgItemMessage(Dialog, id_List, lb_getcursel,0,0);
  95. EndDialog(Dialog, 1);
  96. Exit;
  97. end;
  98. id_List:
  99. begin
  100. if HiWord(LParam)=lbn_DblClk then begin
  101. ANS:=SendDlgItemMessage(Dialog, id_List, lb_getcursel,0,0);
  102. EndDialog(Dialog, 1);
  103. Exit;
  104. end;
  105. end;
  106. id_Cancel:
  107. begin
  108. EndDialog(Dialog, 0);
  109. Exit;
  110. end;
  111. end;
  112. end;
  113. ListDialog := False;
  114. end;
  115. function DoListBox(Window: HWnd;
  116. var RezINT:integer;Question:String): Boolean;
  117. var
  118. DialogProc: TFarProc;
  119. begin
  120. StrPcopy(GQuestion,Question);
  121. DialogProc := MakeProcInstance(@ListDialog, HInstance);
  122. DoListBox := DialogBox(HInstance, 'LBOX', Window, DialogProc) = 1;
  123. FreeProcInstance(DialogProc);
  124. RezINT:=ANS;
  125. end;
  126. {*********************** BOX DIALOG **********************}
  127. var ANS2:integer;
  128. var theBoxWin:HWnd;
  129. function BoxDialog(Dialog: HWnd; Message, WParam: Word;
  130. LParam: longint): Bool; export;
  131. var i:integer;
  132. begin
  133. BoxDialog := True;
  134. case Message of
  135. wm_InitDialog:
  136. begin
  137. theboxwin:=Dialog;
  138. {showwindow(dialog,sw_maximize);}
  139. SetDlgItemText(dialog,id_QueL,GQuestion);
  140. for i:=1 to LB_SIZE do begin
  141. SendDlgItemMessage(Dialog, id_List, lb_addstring,0,longint(LB_ARR[i]));
  142. end;
  143. SendDlgItemMessage(Dialog, id_List, lb_setcursel,0,0);
  144. SetFocus(GetDlgItem(Dialog, id_List));
  145. BoxDialog := false;
  146. Exit;
  147. end;
  148. wm_Command:
  149. case WParam of
  150. id_Ok:
  151. begin
  152. { GetDlgItemText(Dialog, id_Edit, GRezData, 61); }
  153. ANS2:=SendDlgItemMessage(Dialog, id_List, lb_getcursel,0,0);
  154. EndDialog(Dialog, 1);
  155. Exit;
  156. end;
  157. id_List:
  158. begin
  159. if HiWord(LParam)=lbn_DblClk then begin
  160. ANS2:=SendDlgItemMessage(Dialog, id_List, lb_getcursel,0,0);
  161. EndDialog(Dialog, 1);
  162. Exit;
  163. end;
  164. end;
  165. id_Cancel:
  166. begin
  167. EndDialog(Dialog, 0);
  168. Exit;
  169. end;
  170. end;
  171. end;
  172. BoxDialog := False;
  173. end;
  174. function CreBox(Window: HWnd;
  175. var RezINT:integer;Question:String;var theBoxproc:longint;
  176. var thewin:word): Boolean;
  177. Var
  178. DialogProc: TFarProc;
  179. begin
  180. StrPcopy(GQuestion,Question);
  181. theBoxProc :=longint( MakeProcInstance(@BoxDialog, HInstance));
  182. CreBox := CreateDialog(HInstance, 'LBOX', Window, TFarProc(theBoxProc)) = 1;
  183. thewin:=theboxwin;
  184. end;
  185. function DelBox(theBoxProc:longint; thewin:word): Boolean;
  186. var
  187. DialogProc: TFarProc;
  188. begin
  189. DestroyWindow(theWin);
  190. FreeProcInstance(TFarProc(theboxproc));
  191. end;
  192. {*********************** ST BOX DIALOG **********************}
  193. function STBoxDialog(Dialog: HWnd; Message, WParam: Word;
  194. LParam: longint): Bool; export;
  195. var i:integer;
  196. begin
  197. STBoxDialog := True;
  198. case Message of
  199. wm_InitDialog:
  200. begin
  201. (* theboxwin:=Dialog; *)
  202. SetDlgItemText(dialog,id_QueL,GQuestion);
  203. Exit;
  204. end;
  205. wm_Command:
  206. case WParam of
  207. id_Ok:
  208. begin
  209. { GetDlgItemText(Dialog, id_Edit, GRezData, 61); }
  210. ANS2:=SendDlgItemMessage(Dialog, id_List, lb_getcursel,0,0);
  211. EndDialog(Dialog, 1);
  212. Exit;
  213. end;
  214. id_Cancel:
  215. begin
  216. EndDialog(Dialog, 0);
  217. Exit;
  218. end;
  219. end;
  220. end;
  221. STBoxDialog := False;
  222. end;
  223. var theSTboxProc:longint;
  224. theSTWin:Hwnd;
  225. function CreSTBox(Window: HWnd;
  226. var RezINT:integer;Question:String): Boolean;
  227. Var
  228. DialogProc: TFarProc;
  229. begin
  230. StrPcopy(GQuestion,Question);
  231. theSTBoxProc :=longint( MakeProcInstance(@STBoxDialog, HInstance));
  232. theSTwin:= CreateDialog(HInstance, 'STBOX',
  233. Window, TFarProc(theSTBoxProc));
  234. CreSTBox := theSTwin<>0;
  235. end;
  236. procedure SetSTBox(i:longint);
  237. begin
  238. SetDlgItemInt(theSTWin,105,i,false);
  239. end;
  240. function DelSTBox: Boolean;
  241. var
  242. DialogProc: TFarProc;
  243. begin
  244. DestroyWindow(theSTWin);
  245. FreeProcInstance(TFarProc(theSTboxproc));
  246. end;
  247. end.