home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 1995 May
/
pcw-0595.bin
/
demos
/
databeck
/
wsounds
/
setup.dir
/
wswsrc.exe
/
TAKEDLG.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-12-02
|
5KB
|
191 lines
{ Unit for passing WAV files to the database }
unit TakeDlg;
interface
uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
DataObj, CommDlg, saveDlg, DiskDlg, EventDlg;
const
dn_TakeDlg = 'TakeDlg';
id_Lister = 600;
id_titles = 601;
id_kill = 602;
id_comment = 603;
ID_TakePlay= 604;
type
PTakeDlg = ^TTakeDlg;
TTakeDlg = object(TDialog)
CommNow : BOOL;
Count2Get : Integer;
ChooseLB : PListBox;
CurrCollect : PWaveCollection;
constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection);
function CanClose: Boolean; virtual;
procedure SetupWindow; virtual;
procedure HandleChooseLB(var Msg: TMessage);virtual id_First + id_Lister;
procedure HandleKill(Var Msg:TMessage); virtual id_First + id_Kill;
procedure HandleNow (Var Msg: TMessage); virtual id_First + id_comment;
Procedure HandlePlay(VAR Msg : TMessage);virtual id_First + id_TakePlay;
procedure OK(Var Msg:TMessage); virtual id_first + id_Ok;
Destructor Done;virtual;
end;
implementation
{ TTakeDlg }
constructor TTakeDlg.Init(AParent: PWindowsObject;
AName: PChar; ACollect : PWaveCollection);
begin
TDialog.Init(AParent, AName);
CurrCollect := ACollect;
CommNow := FALSE;
ChooseLB := New(PListBox, InitResource( @Self, id_Lister));
WD_KillDoubles(Count2Get);
end;
function TTakeDlg.CanClose: Boolean;
begin
CanClose := True;
end;
procedure TTakeDlg.SetupWindow;
VAR
ACount : Word;
Out : Array [0..6] of char;
begin
TDialog.SetupWindow;
WD_InsertAll(CurrCollect, ChooseLb);
Str (CurrCollect^.Count:5,Out);
SetDlgItemText(HWindow, id_titles,out);
CommNow := FALSE;
ChooseLB^.SetSelIndex(0);
end;
procedure TTakeDlg.HandleNow (Var Msg: TMessage);
Begin
if CommNow = FALSE Then
Begin
CommNow := TRUE;
End
Else
Begin
CommNow := FALSE;
End;
End;
procedure TTakeDlg.HandleKill(Var Msg:TMessage);
var
Idx : Integer;
Out : array [0..5] of char;
BEGIN
Idx := ChooseLB^.GetSelIndex;
if idx >-1 then
Begin
{WaveSelectColl^.AtDelete (idx);}
CurrCollect^.AtDelete (idx);
ChooseLb^.DeleteString (idx);
{Str (WaveSelectColl^.Count:5,Out);}
Str (CurrCollect^.Count:5,Out);
SetDlgItemText(HWindow, id_titles,out);
End;
END;
procedure TTakeDlg.OK(Var Msg:TMessage);
VAR
LDialog : PCommentDlg;
MDialog : PSaveDlg;
Puffer : ARRAY[0..12] OF CHAR;
Lommescount : Word;
pw : PWaveData;
BEGIN
IF (CommNow = TRUE) Then
Begin
{LDialog := New(PCommentDlg, Init(@self, DN_CommentDlg,WaveSelectColl,-1));}
LDialog := New(PCommentDlg, Init(@self, DN_CommentDlg,CurrCollect,-1));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN END;
End;
{WD_CopyAll(WaveSelectColl, WaveCollect);}
WD_CopyAll(CurrCollect, WaveCollect);
MDialog := New(PSaveDlg, Init(@self, DN_SaveDlg,1));
IF Application^.ExecDialog(MDialog) = ID_Ok THEN BEGIN
END;
{
Dispose(WaveCollect,Done);
WaveCollect := New(PWaveCollection, Init(20,5));
IF Exists(WF_DAT) THEN BEGIN
WaveStream := New ( PBufStream, Init(WF_DAT, stOpen, 512));
WaveCollect := PWaveCollection(WaveStream^.Get);
Dispose(WaveStream,Done);
END
ELSE Halt(999);
}
{ WD_Save_n_Copy;}
CheckEvents;
TDialog.OK (Msg);
End;
procedure TTakeDlg.HandlePlay(Var Msg:TMessage);
VAR
Message, BWCCMEs : Integer;
MDummy : Array[0..70] of ChAR;
BEGIN
{--------------------------------------------------------------------}
{--------------------- Play dialog --------------------------------}
Message := ChooseLB^.GetSelIndex;
IF (Message < 0) OR (Message >= WaveSelectColl^.Count) THEN Exit;
PWaveData(WaveSelectColl^.At(Message))^.GetData(WaveDummy);
DPlayObj := New(PDiskPlay,Init(@self));
DPlayObj^.DiskPlayDlg(WaveDummy, Message);
DPlayObj^.Done;
IF (DiskIntoDataBase = TRUE) THEN BEGIN
DiskIntoDataBase := FALSE;
StrCopy(MDummy,'You can only edit the database from the Database dialog box');
BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
END
ELSE BEGIN
END;
DiskDummy[0] := WaveDummy.DiskDrive;
DiskDummy[1] := #0;
StrCat(DiskDummy, ':');
StrCat(DiskDummy,WaveDummy.PathName);
StrCat(DiskDummy,WaveDummy.FileName);
IF Message = idOK THEN sndPlaySound(DiskDummy,SND_Async);
{----------------------------------------------------------------------}
{----------------------------------------------------------------------}
END;
procedure TTakeDlg.HandleChooseLB(var Msg: TMessage);
Var
Idx : Integer;
begin
case Msg.LParamHi of
lbn_SelChange, lbn_DblClk:
begin
if Msg.LParamHi = lbn_DblClk then BEGIN
HandlePlay(Msg);
END;
end;
end;
end;
Destructor TTakeDlg.Done;
BEGIN
TDialog.Done;
END;
end.