gadgetdemo.pas 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  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. CreateList(MyList);
  62. FOR i := 0 TO NumInList-2 DO BEGIN
  63. MyNode := AddNewNode(MyList,mxstrings[i]);
  64. END;
  65. Triton_App := TR_CreateAppTags([
  66. TRCA_Name,'FPC Pascal Demo',
  67. TRCA_LongName,'FPC Pascal Application Demo :)',
  68. TRCA_Version,'0.01',
  69. TRCA_Info,'Just a test of Triton',
  70. TRCA_Release,'1.0',
  71. TRCA_Date,'01-05-1996',
  72. TAG_DONE]);
  73. if Triton_App = NIL then CleanExit('Can''t create application',20);
  74. ProjectStart;
  75. WindowID(1);
  76. WindowPosition(TRWP_CENTERDISPLAY);
  77. WindowTitle('Gadgets');
  78. HorizGroupAC;
  79. Space;
  80. VertGroupA;
  81. Space;
  82. NamedSeparator('Gadget deactivate');
  83. Space;
  84. Button('_Button',ButtonGadID);
  85. Space;
  86. HorizGroupSC;
  87. Space;
  88. HorizGroup;
  89. TextID('_Gadget activ?',CheckGadID);
  90. Space;
  91. CheckBoxCLEFT(CheckGadID);
  92. EndGroup;
  93. Space;
  94. EndGroup;
  95. SpaceB;
  96. NamedSeparator('Pick value');
  97. Space;
  98. LineArray;
  99. BeginLine;
  100. TextID('Sc_roller',ScrollGadID);
  101. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  102. Space;
  103. SetTRTag(TROB_Scroller,TROF_HORIZ);
  104. SetTRTag(TRSC_Total,40);
  105. SetTRTag(TRSC_Visible,10);
  106. SetTRTag(TRAT_Value,5);
  107. SetTRTag(TRAT_ID,ScrollGadID);
  108. Space;
  109. ClippedTextBoxMW(PChar('5'),ScrollGadTextID,2);
  110. EndLine;
  111. Space;
  112. BeginLine;
  113. TextID('S_lider',SlidGadID);
  114. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  115. Space;
  116. SliderGadget(1,50,25,SlidGadID);
  117. Space;
  118. ClippedTextBoxMW('25',SlidGadTextID,2);
  119. EndLine;
  120. Space;
  121. BeginLine;
  122. TextID('C_ycle',CycleGadID);
  123. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  124. Space;
  125. CycleGadget(@cyclestrings,0,CycleGadID);
  126. Space;
  127. ClippedTextBoxMW(cyclestrings[0],CycleGadTextID,5);
  128. EndLine;
  129. EndArray;
  130. SpaceB;
  131. NamedSeparator('Type some Text');
  132. Space;
  133. LineArray;
  134. BeginLine;
  135. TextID('_String',StringGadID);
  136. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  137. Space;
  138. StringGadget('Please change',StringGadID);
  139. GetEntryButton(EntryGadID);
  140. EndLine;
  141. Space;
  142. BeginLine;
  143. TextID('_Password',PassGadID);
  144. SetTRTag(TRAT_Flags,TROF_RIGHTALIGN);
  145. Space;
  146. PasswordGadget('',PassGadID);
  147. EndLine;
  148. EndArray;
  149. Space;
  150. EndGroup;
  151. Space;
  152. VertSeparator;
  153. Space;
  154. VertGroupAC;
  155. Space;
  156. NamedSeparatorI('C_hoose',MxGadID);
  157. Space;
  158. MXGadget(@mxstrings,4,MxGadID);
  159. Space;
  160. ClippedTextBox(mxstrings[4],MxGadTextID);
  161. SpaceB;
  162. NamedSeparatorI('D_oubleclick!',ListGadID);
  163. Space;
  164. ListSS(Mylist,ListGadID,0,0);
  165. EndGroup;
  166. Space;
  167. EndGroup;
  168. EndProject;
  169. Project := TR_OpenProject(Triton_App,@tritontags);
  170. IF Project = NIL THEN CleanExit('No project',20);
  171. quit := False;
  172. WHILE NOT quit DO BEGIN
  173. dummy := TR_Wait(Triton_App,0);
  174. REPEAT
  175. trmsg := TR_GetMsg(Triton_App);
  176. IF trmsg <> NIL THEN BEGIN
  177. IF (trmsg^.trm_Project = Project) THEN BEGIN
  178. CASE trmsg^.trm_Class OF
  179. TRMS_CLOSEWINDOW :
  180. BEGIN
  181. TR_LockProject(project);
  182. dummy := TR_EasyRequest(Triton_App,'%3Sure you want to end this demo?','Yes|No',NIL);
  183. TR_UnlockProject(project);
  184. IF dummy = 1 THEN quit := True;
  185. END;
  186. TRMS_NEWVALUE :
  187. BEGIN
  188. GadID := trmsg^.trm_ID;
  189. CASE GadID OF
  190. CheckGadID :
  191. BEGIN
  192. dummy := trmsg^.trm_Data;
  193. IF dummy = 1 THEN BEGIN
  194. TR_Disable(project,ButtonGadID);
  195. END ELSE BEGIN
  196. TR_Enable(project,ButtonGadID);
  197. TR_SetString(project,StringGadID,'hello test');
  198. END;
  199. END;
  200. ScrollGadID : TR_SetText(project,ScrollGadTextID,LongToStr(trmsg^.trm_Data));
  201. SlidGadID : TR_SetText(project,SlidGadTextID,LongToStr(trmsg^.trm_Data));
  202. CycleGadID : TR_SetText(project,CycleGadTextID,cyclestrings[trmsg^.trm_Data]);
  203. StringGadID : ;
  204. EntryGadID : ;
  205. PassGadID : ;
  206. MxGadID:
  207. BEGIN
  208. TR_SetText(project,MxGadTextID,mxstrings[trmsg^.trm_Data]);
  209. TR_SetValue(project,ListGadID,(trmsg^.trm_Data));
  210. END;
  211. ListGadID :
  212. BEGIN
  213. TR_SetValue(project,MxGadID,(trmsg^.trm_Data));
  214. TR_SetText(project,MxGadTextID,mxstrings[trmsg^.trm_Data]);
  215. END;
  216. END;
  217. END;
  218. TRMS_ACTION :
  219. BEGIN
  220. GadID := trmsg^.trm_ID;
  221. CASE GadID OF
  222. ButtonGadID :
  223. begin
  224. TR_LockProject(project);
  225. TR_EasyRequest(Triton_App,'You clicked on button ' + LongToStr(trmsg^.trm_ID),'_Aha',nil);
  226. TR_UnlockProject(Project);
  227. END;
  228. EntryGadID:
  229. BEGIN
  230. TR_LockProject(project);
  231. z := TR_EasyRequest(Triton_App,TR_GetSTRPTR(project,StringGadID),'OK',NIL);
  232. TR_UnlockProject(Project);
  233. END;
  234. END;
  235. END;
  236. ELSE
  237. END;
  238. END;
  239. TR_ReplyMsg(trmsg);
  240. END;
  241. UNTIL quit OR (trmsg = NIL);
  242. END;
  243. CleanExit('',0);
  244. END.