Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag and Drop, В плеере 
:(
    Опции темы
Racer
  Дата 20.7.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Я хочу реализовать 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 форму то не хрена не компилится

Это сообщение отредактировал(а) Racer - 21.7.2009, 11:16
PM MAIL   Вверх
Nofate
Дата 21.7.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 13.10.2008

Репутация: нет
Всего: 8



А из кода второй формы первая видна? И с  какой ошибкой хотя бы не компилится?


--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
Racer
Дата 21.7.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Ругается так(см. рисунки):
user posted image
user posted image

Цитата

А из кода второй формы первая видна?

Да, без этого никак- плейлист юзает меинформ и наоборот

Это сообщение отредактировал(а) Racer - 21.7.2009, 17:23
PM MAIL   Вверх
Racer
Дата 21.7.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Все, разобрался, забыл подключить ShellApi.
Тема закрыта 
PM MAIL   Вверх
Racer
  Дата 22.7.2009, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Тема не закрыта. Я забыл ранее сделать чтоб если юзверь дрегит всю папку а не группу, что оно тоже работало. Как реализовать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.