Я хочу реализовать Drag and Drop в своем плеере. Уже сделал на главной форме, но хочу тоже и в плейлист(он отдельным окном). Я копирую свой код реализации Drag and Drop`а во 2 форму но там компил не хочет компилить. Реализую так:
| Код | private { Private declarations } procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
. . .
procedure TForm1.FormCreate(Sender: TObject); DragAcceptFiles(Handle, true); end;
. . .
procedure TForm1.FormDestroy(Sender: TObject); DragAcceptFiles(Handle, true); end;
. . . procedure TForm1.WMDropFiles(var Msg: TWMDropFiles); const maxlen = 254; var h: THandle; i, num:integer; pchr: array[0..maxlen] of char; fname: string; begin h := Msg.Drop; Form2.ListBox1.Clear; Form2.ListBox2.Clear;
num:=DragQueryFile(h,Dword(-1),nil,0); for i:=0 to num-1 do begin DragQueryFile(h,i,pchr,maxlen); fname := string(pchr); if ((LowerCase(ExtractFileExt(fname)) = ('.wma')) or (LowerCase(ExtractFileExt(fname)) = ('.wav')) or (LowerCase(ExtractFileExt(fname)) = ('.mp3')) or (LowerCase(ExtractFileExt(fname)) = ('.aiff')) or (LowerCase(ExtractFileExt(fname)) = ('.mp2')) or (LowerCase(ExtractFileExt(fname)) = ('.mp1')) or (LowerCase(ExtractFileExt(fname)) = ('.ogg')) or (LowerCase(ExtractFileExt(fname)) = ('.midi')) or (LowerCase(ExtractFileExt(fname)) = ('.wv'))) then begin Form2.ListBox2.Items.Add(fname); Form2.ListBox1.Items.Add(ExtractFileName(fname)); Form2.ListBox1.ItemIndex:= 0; end; end; DragFinish(h);
BASS_ChannelStop(stream); stream := BASS_StreamCreateFile(False, Pchar(Form2.ListBox2.Items.Strings[0]), 0, 0, 0); BASS_ChannelPlay(stream, True); sSpeedButton2.ImageIndex:= 1; percent:= (BASS_ChannelGetLength(stream, BASS_POS_BYTE)/ 100000); was_playing:= True; Form1.Caption:= ('Walkman- '+ExtractFileName(Form2.ListBox1.Items.Strings[0])); length:= BASS_ChannelGetLength(stream, BASS_POS_BYTE); sSpeedButton2.Enabled:= True; sSpeedButton3.Enabled:= True; sSpeedButton4.Enabled:= True; sSpeedButton5.Enabled:= True; PositionBar.Enabled:= True; sSpeedButton2.Hint:= 'Pause'; sSpeedButton2.ShowHint:= True; sSpeedButton3.ShowHint:= True; sSpeedButton4.ShowHint:= True; sSpeedButton5.ShowHint:= True; stoped_by_user:= False; track:= 0; Timer3.Enabled:=True;
Form1.AdvAlertWindow1.Hide; AdvAlertWindow1.AlertMessages.Clear; AdvAlertWindow1.AlertMessages.Add.Text.Text := ('Now playing:<br>'+'<b>'+ Form2.ListBox1.Items.Strings[0]+'</b>'+'<hr><br><b>Walkman</b>'); Form1.AdvAlertWindow1.Show; end;
|
А еще у формы DragMode:= dmAutomatic. Так все работает, но если кидаю код (все 1 в1) во 2 форму то не хрена не компилится |