home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / reeplay / trackwin.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1993-03-03  |  4.3 KB  |  156 lines

  1. {$A+,B-,D-,E-,F-,G-,I-,K+,N-,O-,P-,Q-,R-,S-,T-,V+,W+,X+,Y+}
  2. (* ====================================================== *)
  3. (*                     TRACKWIN.PAS                       *)
  4. (*         (C) 1993 Andreas Golgath & DMV-Verlag          *)
  5. (*         Unit fⁿr das Track-Window von REEPLAY          *)
  6. (*                Compiler: Borland Pascal 7.0            *)
  7. (* ====================================================== *)
  8.  
  9. UNIT TrackWin;
  10.  
  11. INTERFACE
  12.  
  13. USES
  14.   WinTypes, Objects, OWindows, ODialogs,
  15.   CDAudio, CommDlg, MMSystem;
  16.  
  17. CONST
  18.   cm_LoadData = 121;
  19.   cm_SaveData = 122;
  20.  
  21. TYPE
  22.   tTrackXferRec = RECORD
  23.     ListStrings: pStrCollection;
  24.     ListSelect: INTEGER;
  25.   END;
  26.  
  27.   tTrackData = RECORD
  28.     TrackNo, LenMin, LenSec: WORD;
  29.     TrackName: LONGINT;
  30.   END;
  31.  
  32.   pTrackWindow = ^tTrackWindow;
  33.   tTrackWindow = OBJECT(tWindow)
  34.     aListBox:   pListBox;
  35.     aStatic:    pStatic;
  36.     TheFont:    hFont;
  37.     Xfer:       tTrackXferRec;
  38.     CONSTRUCTOR Init(aTitle: pChar);
  39.     DESTRUCTOR  Done; VIRTUAL;
  40.     PROCEDURE   SetupWindow; VIRTUAL;
  41.     PROCEDURE   wmGetMinMaxInfo(VAR Msg: tMessage);
  42.                 VIRTUAL wm_First + wm_GetMinMaxInfo;
  43.     PROCEDURE   wmCtlColor(VAR Msg: tMessage);
  44.                 VIRTUAL wm_First + wm_CtlColor;
  45.     PROCEDURE   wmSize(VAR Msg: tMessage);
  46.                 VIRTUAL wm_First + wm_Size;
  47.   END;
  48.  
  49. CONST
  50.   TrackWindow: pTrackWindow = NIL;
  51.  
  52. IMPLEMENTATION
  53.  
  54. USES
  55.   WinProcs, Strings;
  56.  
  57. CONST
  58.   XSize                = 300;
  59.   YSize                = 200;
  60.   id_Box               = 201;
  61.   id_Static            = 202;
  62.   id_ScrollBar         = 203;
  63.   StatTitle    : pChar =
  64.                    'Track==LΣnge==========================';
  65.  
  66. PROCEDURE WalkOnTheWildSide(VAR aTrackCol: pStrCollection);
  67. VAR
  68.   Buffer:    ARRAY [0..79] OF CHAR;
  69.   TrackData: tTrackData;
  70.   Count:     INTEGER;
  71.   ReturnCode,
  72.   MSF:       LONGINT;
  73. BEGIN
  74.   FOR Count := 1 TO HowManyTracks DO BEGIN
  75.     MSF := GetTrackLen(Count);
  76.     TrackData.TrackNo := Count;
  77.     TrackData.LenMin  := mci_MSF_Minute(MSF);
  78.     TrackData.LenSec  := mci_MSF_Second(MSF);
  79.     wvSprintF(Buffer, ' %02i   %02i:%02i', TrackData);
  80.     aTrackCol^.Insert(StrNew(Buffer));
  81.   END;
  82. END;
  83.  
  84. CONSTRUCTOR tTrackWindow.Init(aTitle: pChar);
  85. BEGIN
  86.   tWindow.Init(NIL, aTitle);
  87.   Attr.Style := ws_Popup OR ws_OverlappedWindow
  88.                          OR ws_Visible;
  89.   Attr.w := XSize;
  90.   Attr.h := YSize;
  91.   Attr.Menu := LoadMenu(hInstance, 'TrackMenu');
  92.   aListBox := New(pListBox,
  93.                   Init(@Self, id_Box, 0, 16, XSize, YSize));
  94.   aListBox^.Attr.Style := ((aListBox^.Attr.Style
  95.                             AND NOT ws_Border)
  96.                 OR lbs_NoIntegralHeight)
  97.                             AND NOT lbs_Sort;
  98.   EnableKBHandler;
  99.   aStatic := New(pStatic,
  100.                  Init(@Self, id_Static, StatTitle, 0, 0,
  101.                       XSize, 15, StrLen(StatTitle)));
  102.   aStatic^.Attr.Style := aStatic^.Attr.Style
  103.                          OR ss_LeftNoWordWrap;
  104.   Xfer.ListStrings := New(pStrCollection, Init(30, 5));
  105.   Xfer.ListStrings^.Duplicates := TRUE;
  106.   TransferBuffer := @Xfer;
  107. END;
  108.  
  109. DESTRUCTOR tTrackWindow.Done;
  110. BEGIN
  111.   inherited Done;
  112.   TrackWindow := NIL;
  113. END;
  114.  
  115. PROCEDURE tTrackWindow.SetupWindow;
  116. BEGIN
  117.   tWindow.SetupWindow;
  118.   TheFont := CreateFont(13, 0, 0, 0, 400, 0, 0, 0,
  119.                         ANSI_CharSet, Out_Default_Precis,
  120.                         Clip_Default_Precis,
  121.                         Default_Quality, 0, 'COURIER');
  122.  
  123.   SendMessage(aListBox^.hWindow, wm_SetFont, TheFont, 0);
  124.   WalkOnTheWildSide(Xfer.ListStrings);
  125.   aListBox^.Transfer(@Xfer, tf_SetData);
  126. END;
  127.  
  128. PROCEDURE tTrackWindow.wmGetMinMaxInfo(VAR Msg: tMessage);
  129. TYPE
  130.   pInfo= ^tInfo;
  131.   tInfo= ARRAY [0..4] OF tPoint;
  132. BEGIN
  133.   pInfo(Msg.lParam)^[4].x := XSize;
  134. END;
  135.  
  136. PROCEDURE tTrackWindow.wmCtlColor(VAR Msg: tMessage);
  137. BEGIN
  138.   DefWndProc(Msg);
  139.   IF (Msg.lParamHi = ctlColor_Static) THEN BEGIN
  140.     SetTextColor(Msg.wParam, RGB(150, 0, 0));
  141.     SetBkColor(Msg.wParam, RGB(200, 200, 200));
  142.   END;
  143. END;
  144.  
  145. PROCEDURE tTrackWindow.wmSize(VAR Msg: tMessage);
  146. BEGIN
  147.   tWindow.wmSize(Msg);
  148.   MoveWindow(aListBox^.hWindow, 0, 16, Msg.lParamLo,
  149.              Msg.lParamHi - 16, TRUE);
  150. END;
  151.  
  152. END.
  153.  
  154. (* ====================================================== *)
  155. (*                  Ende von TRACKWIN.PAS                 *)
  156.