home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D-,E-,F-,G-,I-,K+,N-,O-,P-,Q-,R-,S-,T-,V+,W+,X+,Y+}
- (* ====================================================== *)
- (* TRACKWIN.PAS *)
- (* (C) 1993 Andreas Golgath & DMV-Verlag *)
- (* Unit fⁿr das Track-Window von REEPLAY *)
- (* Compiler: Borland Pascal 7.0 *)
- (* ====================================================== *)
-
- UNIT TrackWin;
-
- INTERFACE
-
- USES
- WinTypes, Objects, OWindows, ODialogs,
- CDAudio, CommDlg, MMSystem;
-
- CONST
- cm_LoadData = 121;
- cm_SaveData = 122;
-
- TYPE
- tTrackXferRec = RECORD
- ListStrings: pStrCollection;
- ListSelect: INTEGER;
- END;
-
- tTrackData = RECORD
- TrackNo, LenMin, LenSec: WORD;
- TrackName: LONGINT;
- END;
-
- pTrackWindow = ^tTrackWindow;
- tTrackWindow = OBJECT(tWindow)
- aListBox: pListBox;
- aStatic: pStatic;
- TheFont: hFont;
- Xfer: tTrackXferRec;
- CONSTRUCTOR Init(aTitle: pChar);
- DESTRUCTOR Done; VIRTUAL;
- PROCEDURE SetupWindow; VIRTUAL;
- PROCEDURE wmGetMinMaxInfo(VAR Msg: tMessage);
- VIRTUAL wm_First + wm_GetMinMaxInfo;
- PROCEDURE wmCtlColor(VAR Msg: tMessage);
- VIRTUAL wm_First + wm_CtlColor;
- PROCEDURE wmSize(VAR Msg: tMessage);
- VIRTUAL wm_First + wm_Size;
- END;
-
- CONST
- TrackWindow: pTrackWindow = NIL;
-
- IMPLEMENTATION
-
- USES
- WinProcs, Strings;
-
- CONST
- XSize = 300;
- YSize = 200;
- id_Box = 201;
- id_Static = 202;
- id_ScrollBar = 203;
- StatTitle : pChar =
- 'Track==LΣnge==========================';
-
- PROCEDURE WalkOnTheWildSide(VAR aTrackCol: pStrCollection);
- VAR
- Buffer: ARRAY [0..79] OF CHAR;
- TrackData: tTrackData;
- Count: INTEGER;
- ReturnCode,
- MSF: LONGINT;
- BEGIN
- FOR Count := 1 TO HowManyTracks DO BEGIN
- MSF := GetTrackLen(Count);
- TrackData.TrackNo := Count;
- TrackData.LenMin := mci_MSF_Minute(MSF);
- TrackData.LenSec := mci_MSF_Second(MSF);
- wvSprintF(Buffer, ' %02i %02i:%02i', TrackData);
- aTrackCol^.Insert(StrNew(Buffer));
- END;
- END;
-
- CONSTRUCTOR tTrackWindow.Init(aTitle: pChar);
- BEGIN
- tWindow.Init(NIL, aTitle);
- Attr.Style := ws_Popup OR ws_OverlappedWindow
- OR ws_Visible;
- Attr.w := XSize;
- Attr.h := YSize;
- Attr.Menu := LoadMenu(hInstance, 'TrackMenu');
- aListBox := New(pListBox,
- Init(@Self, id_Box, 0, 16, XSize, YSize));
- aListBox^.Attr.Style := ((aListBox^.Attr.Style
- AND NOT ws_Border)
- OR lbs_NoIntegralHeight)
- AND NOT lbs_Sort;
- EnableKBHandler;
- aStatic := New(pStatic,
- Init(@Self, id_Static, StatTitle, 0, 0,
- XSize, 15, StrLen(StatTitle)));
- aStatic^.Attr.Style := aStatic^.Attr.Style
- OR ss_LeftNoWordWrap;
- Xfer.ListStrings := New(pStrCollection, Init(30, 5));
- Xfer.ListStrings^.Duplicates := TRUE;
- TransferBuffer := @Xfer;
- END;
-
- DESTRUCTOR tTrackWindow.Done;
- BEGIN
- inherited Done;
- TrackWindow := NIL;
- END;
-
- PROCEDURE tTrackWindow.SetupWindow;
- BEGIN
- tWindow.SetupWindow;
- TheFont := CreateFont(13, 0, 0, 0, 400, 0, 0, 0,
- ANSI_CharSet, Out_Default_Precis,
- Clip_Default_Precis,
- Default_Quality, 0, 'COURIER');
-
- SendMessage(aListBox^.hWindow, wm_SetFont, TheFont, 0);
- WalkOnTheWildSide(Xfer.ListStrings);
- aListBox^.Transfer(@Xfer, tf_SetData);
- END;
-
- PROCEDURE tTrackWindow.wmGetMinMaxInfo(VAR Msg: tMessage);
- TYPE
- pInfo= ^tInfo;
- tInfo= ARRAY [0..4] OF tPoint;
- BEGIN
- pInfo(Msg.lParam)^[4].x := XSize;
- END;
-
- PROCEDURE tTrackWindow.wmCtlColor(VAR Msg: tMessage);
- BEGIN
- DefWndProc(Msg);
- IF (Msg.lParamHi = ctlColor_Static) THEN BEGIN
- SetTextColor(Msg.wParam, RGB(150, 0, 0));
- SetBkColor(Msg.wParam, RGB(200, 200, 200));
- END;
- END;
-
- PROCEDURE tTrackWindow.wmSize(VAR Msg: tMessage);
- BEGIN
- tWindow.wmSize(Msg);
- MoveWindow(aListBox^.hWindow, 0, 16, Msg.lParamLo,
- Msg.lParamHi - 16, TRUE);
- END;
-
- END.
-
- (* ====================================================== *)
- (* Ende von TRACKWIN.PAS *)
-