gadgetdemo.pas 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. PROGRAM GadgetDemo;
  2. uses exec, triton, tritonmacros, utility, amigalib,amigautils, linklist;
  3. {
  4. A demo in FPC Pascal using triton.library
  5. Update for fpc 1.0.7.
  6. Removed the use of vartags and pas2c.
  7. 09 Jan 2003.
  8. [email protected]
  9. }
  10. CONST
  11. NumInList = 7;
  12. cyclenum = 4;
  13. mxstrings : ARRAY[0..NumInList-1] OF PChar = (
  14. 'Amiga 500',
  15. 'Amiga 600',
  16. 'Amiga 1200',
  17. 'Amiga 2000',
  18. 'Amiga 3000',
  19. 'Amiga 4000',
  20. NIL);
  21. cyclestrings : ARRAY[0..cyclenum-1] OF PChar = (
  22. 'Hallo',
  23. 'Moin',
  24. 'Tach',
  25. NIL);
  26. CONST
  27. ButtonGadID = 1;
  28. CheckGadID = 2;
  29. ScrollGadID = 3;
  30. ScrollGadTextID = 4;
  31. SlidGadID = 5;
  32. SlidGadTextID = 6;
  33. CycleGadID = 7;
  34. CycleGadTextID = 8;
  35. StringGadID = 9;
  36. EntryGadID = 10;
  37. PassGadID = 11;
  38. MxGadID = 12;
  39. MxGadTextID = 13;
  40. ListGadID = 14;
  41. VAR
  42. Triton_App : pTR_App;
  43. Project : pTR_Project;
  44. trmsg : pTR_Message;
  45. quit : Boolean;
  46. z : Longint;
  47. dummy : Longint;
  48. Mylist : pList;
  49. MyNode : pFPCNode;
  50. i : Longint;
  51. GadID : Longint;
  52. PROCEDURE CleanExit(errstring : STRING; rc : Longint);
  53. BEGIN
  54. IF assigned(Project) THEN TR_CloseProject(Project);
  55. if assigned(Triton_App) then TR_DeleteApp(Triton_App);
  56. if assigned(MyList) then DestroyList(MyList);
  57. IF errstring <> '' THEN WriteLn(errstring);
  58. Halt(rc)
  59. END;
  60. BEGIN
  61. if not Assigned(TritonBase) then
  62. begin
  63. writeln('cannot open ' + TRITONNAME);
  64. Halt(5);
  65. end;
  66. CreateList(MyList);
  67. FOR i := 0 TO NumInList-2 DO BEGIN
  68. MyNode := AddNewNode(MyList,mxstrings[i]);
  69. END;
  70. Triton_App := TR_CreateAppTags([
  71. TRCA_Name, AsTag('FPC Pascal Demo'),
  72. TRCA_LongName, AsTag('FPC Pascal Application Demo :)'),
  73. TRCA_Version, AsTag('0.01'),
  74. TRCA_Info, AsTag('Just a test of Triton'),
  75. TRCA_Release, AsTag('1.0'),
  76. TRCA_Date, AsTag('01-05-1996'),
  77. TAG_DONE]);
  78. if Triton_App = NIL then CleanExit('Can''t create application',20);
  79. ProjectStart;
  80. WindowID(1);
  81. WindowPosition(TRWP_CENTERDISPLAY);
  82. WindowTitle('Gadgets');
  83. HorizGroupAC;
  84. Space;
  85. VertGroupA;
  86. Space;
  87. NamedSeparator('Gadget deactivate');
  88. Space;
  89. Button('_Button',ButtonGadID);
  90. Space;
  91. HorizGroupSC;
  92. Space;
  93. HorizGroup;
  94. TextID('_Gadget activ?',CheckGadID);
  95. Space;
  96. CheckBoxCLEFT(CheckGadID);
  97. EndGroup;
  98. Space;
  99. EndGroup;
  100. SpaceB;
  101. NamedSeparator('Pick value');
  102. Space;
  103. LineArray;
  104. BeginLine;
  105. TextID('Sc_roller',ScrollGadID);
  106. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  107. Space;
  108. SetTRTag(TROB_Scroller,TROF_HORIZ);
  109. SetTRTag(TRSC_Total,40);
  110. SetTRTag(TRSC_Visible,10);
  111. SetTRTag(TRAT_Value,5);
  112. SetTRTag(TRAT_ID,ScrollGadID);
  113. Space;
  114. ClippedTextBoxMW(PChar('5'),ScrollGadTextID,2);
  115. EndLine;
  116. Space;
  117. BeginLine;
  118. TextID('S_lider',SlidGadID);
  119. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  120. Space;
  121. SliderGadget(1,50,25,SlidGadID);
  122. Space;
  123. ClippedTextBoxMW('25',SlidGadTextID,2);
  124. EndLine;
  125. Space;
  126. BeginLine;
  127. TextID('C_ycle',CycleGadID);
  128. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  129. Space;
  130. CycleGadget(@cyclestrings,0,CycleGadID);
  131. Space;
  132. ClippedTextBoxMW(cyclestrings[0],CycleGadTextID,5);
  133. EndLine;
  134. EndArray;
  135. SpaceB;
  136. NamedSeparator('Type some Text');
  137. Space;
  138. LineArray;
  139. BeginLine;
  140. TextID('_String',StringGadID);
  141. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  142. Space;
  143. StringGadget('Please change',StringGadID);
  144. GetEntryButton(EntryGadID);
  145. EndLine;
  146. Space;
  147. BeginLine;
  148. TextID('_Password',PassGadID);
  149. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  150. Space;
  151. PasswordGadget('',PassGadID);
  152. EndLine;
  153. EndArray;
  154. Space;
  155. EndGroup;
  156. Space;
  157. VertSeparator;
  158. Space;
  159. VertGroupAC;
  160. Space;
  161. NamedSeparatorI('C_hoose',MxGadID);
  162. Space;
  163. MXGadget(@mxstrings,4,MxGadID);
  164. Space;
  165. ClippedTextBox(mxstrings[4],MxGadTextID);
  166. SpaceB;
  167. NamedSeparatorI('D_oubleclick!',ListGadID);
  168. Space;
  169. ListSS(Mylist,ListGadID,0,0);
  170. EndGroup;
  171. Space;
  172. EndGroup;
  173. EndProject;
  174. Project := TR_OpenProject(Triton_App,@tritontags);
  175. IF Project = NIL THEN CleanExit('No project',20);
  176. quit := False;
  177. WHILE NOT quit DO BEGIN
  178. dummy := TR_Wait(Triton_App,0);
  179. REPEAT
  180. trmsg := TR_GetMsg(Triton_App);
  181. IF trmsg <> NIL THEN BEGIN
  182. IF (trmsg^.trm_Project = Project) THEN BEGIN
  183. CASE trmsg^.trm_Class OF
  184. TRMS_CLOSEWINDOW :
  185. BEGIN
  186. TR_LockProject(project);
  187. dummy := TR_EasyRequest(Triton_App,'%3Sure you want to end this demo?','Yes|No',NIL);
  188. TR_UnlockProject(project);
  189. IF dummy = 1 THEN quit := True;
  190. END;
  191. TRMS_NEWVALUE :
  192. BEGIN
  193. GadID := trmsg^.trm_ID;
  194. CASE GadID OF
  195. CheckGadID :
  196. BEGIN
  197. dummy := trmsg^.trm_Data;
  198. IF dummy = 1 THEN BEGIN
  199. TR_Disable(project,ButtonGadID);
  200. END ELSE BEGIN
  201. TR_Enable(project,ButtonGadID);
  202. TR_SetString(project,StringGadID,'hello test');
  203. END;
  204. END;
  205. ScrollGadID : TR_SetText(project,ScrollGadTextID,LongToStr(trmsg^.trm_Data));
  206. SlidGadID : TR_SetText(project,SlidGadTextID,LongToStr(trmsg^.trm_Data));
  207. CycleGadID : TR_SetText(project,CycleGadTextID,cyclestrings[trmsg^.trm_Data]);
  208. StringGadID : ;
  209. EntryGadID : ;
  210. PassGadID : ;
  211. MxGadID:
  212. BEGIN
  213. TR_SetText(project,MxGadTextID,mxstrings[trmsg^.trm_Data]);
  214. TR_SetValue(project,ListGadID,(trmsg^.trm_Data));
  215. END;
  216. ListGadID :
  217. BEGIN
  218. TR_SetValue(project,MxGadID,(trmsg^.trm_Data));
  219. TR_SetText(project,MxGadTextID,mxstrings[trmsg^.trm_Data]);
  220. END;
  221. END;
  222. END;
  223. TRMS_ACTION :
  224. BEGIN
  225. GadID := trmsg^.trm_ID;
  226. CASE GadID OF
  227. ButtonGadID :
  228. begin
  229. TR_LockProject(project);
  230. TR_EasyRequest(Triton_App,'You clicked on button ' + LongToStr(trmsg^.trm_ID),'_Aha',nil);
  231. TR_UnlockProject(Project);
  232. END;
  233. EntryGadID:
  234. BEGIN
  235. TR_LockProject(project);
  236. z := TR_EasyRequest(Triton_App,TR_GetSTRPTR(project,StringGadID),'OK',NIL);
  237. TR_UnlockProject(Project);
  238. END;
  239. END;
  240. END;
  241. ELSE
  242. END;
  243. END;
  244. TR_ReplyMsg(trmsg);
  245. END;
  246. UNTIL quit OR (trmsg = NIL);
  247. END;
  248. CleanExit('',0);
  249. END.