listview.pas 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. PROGRAM ListView;
  2. uses exec, triton, tritonmacros, linklist, utility;
  3. {
  4. A demo in FPC Pascal using triton.library
  5. Updated for fpc1.0.7
  6. 11 Jan 2003.
  7. [email protected]
  8. }
  9. const
  10. weekday : array [0..6] of pchar = (
  11. 'Monday',
  12. 'Tuesday',
  13. 'Wendsday',
  14. 'Thursday',
  15. 'Friday',
  16. 'Saturday',
  17. 'Sunday');
  18. VAR
  19. Project : pTR_Project;
  20. close_me : BOOLEAN;
  21. trmsg : pTR_Message;
  22. dummy : longint;
  23. mylist : pList;
  24. mynode : pFPCNode;
  25. num : longint;
  26. Triton_App : pTr_App;
  27. PROCEDURE CleanExit(errstring : STRING; rc : Longint);
  28. BEGIN
  29. if assigned(Triton_App) then TR_DeleteApp(Triton_App);
  30. IF assigned(Project) THEN TR_CloseProject(Project);
  31. IF Assigned(mylist) THEN DestroyList(mylist);
  32. IF errstring <> '' THEN WriteLn(errstring);
  33. Halt(rc)
  34. END;
  35. begin
  36. if not Assigned(TritonBase) then
  37. begin
  38. writeln('cannot open ' + TRITONNAME);
  39. Halt(5);
  40. end;
  41. Triton_App := TR_CreateAppTags([
  42. TRCA_Name, AsTag('Triton ListView'),
  43. TRCA_Release, AsTag('1.0'),
  44. TRCA_Date, AsTag('03-02-1998'),
  45. TAG_DONE]);
  46. if Triton_App = nil then Cleanexit('Can''t create application',20);
  47. CreateList(mylist);
  48. for dummy := 0 to 6 do begin
  49. mynode := AddNewNode(mylist,weekday[dummy]);
  50. end;
  51. ProjectStart;
  52. WindowID(1);
  53. WindowPosition(TRWP_CENTERDISPLAY);
  54. WindowTitle('Listview');
  55. HorizGroupA;
  56. Space;
  57. VertGroupA;
  58. Space;
  59. CenteredTextID('_List',7);
  60. Space;
  61. ListSS(mylist,7,0,2);
  62. Space;
  63. EndGroup;
  64. Space;
  65. EndGroup;
  66. EndProject;
  67. Project := TR_OpenProject(Triton_App,@tritontags);
  68. IF Project = NIL THEN CleanExit('Can''t create project',20);
  69. close_me := FALSE;
  70. WHILE NOT close_me DO BEGIN
  71. dummy := TR_Wait(Triton_App,0);
  72. REPEAT
  73. trmsg := TR_GetMsg(Triton_App);
  74. IF trmsg <> NIL THEN BEGIN
  75. IF (trmsg^.trm_Project = Project) THEN BEGIN
  76. CASE trmsg^.trm_Class OF
  77. TRMS_CLOSEWINDOW : begin
  78. num := TR_GetValue(Project,7);
  79. mynode := GetNodeNumber(mylist,num);
  80. writeln('You picked number: ',num,' and the text was: ',GetNodeData(mynode));
  81. close_me := True;
  82. end;
  83. TRMS_ERROR: WriteLN(TR_GetErrorString(trmsg^.trm_Data));
  84. TRMS_NEWVALUE : IF trmsg^.trm_ID = 7 then writeln('You picked number: ',TR_GetValue(Project,7));
  85. END;
  86. END;
  87. TR_ReplyMsg(trmsg);
  88. END;
  89. UNTIL close_me OR (trmsg = NIL);
  90. END;
  91. Cleanexit('',0);
  92. end.