Показать сообщение отдельно
  #1  
Старый 17.08.2013, 12:52
Nindzzya Nindzzya вне форума
Прохожий
 
Регистрация: 22.01.2013
Сообщения: 10
Репутация: 10
По умолчанию Помогите разобраться с Drag&Drop при программном создании ListBox'ов

Здравствуйте, я создаю на Скролбоксе несколько Листбоксов и потом хочу перетягивать файл в Листбокс и пишу слово "фото", но у меня почемуто на перемещение файла реагирует только первый Листбокс. Можете помочь разобраться, как сделать чтобы на моё перемещение реагировал тот листбокс куда я переместил мышью файл?
Вот код, что я смог написать, я совсем новичок(
Код:
var
  Form1: TForm1;
    a: array [0..20] of TListBox;
    i: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i, z: Integer;
begin

z:=0;
 for i:= 0 to 5 do
     begin
       a[i]:= TListBox.Create(self);
       a[i].Parent:= ScrollBox1;
       a[i].Top:= z;
       a[i].Left:= 1;
       a[i].Width:= 313;
       a[i].Height:= 120;
       z:= z + 125;
       a[i].DragMode:= dmAutomatic;
      end;
end;


 procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
  HF: THandle;
  s: array [0..1023] of char;
  p: TPoint;
  myRec: TRect;

begin
  HF := Msg.Drop;
  DragQueryFile(HF, 1, s, sizeof(s));
  DragQueryPoint(HF, p);

  begin
    if PtInRect(a[i].BoundsRect, p)
      then
      a[i] := a[i];  // не понимаю эту строчку
      a[i].Items.add('Фото');
  end;

  DragFinish(HF);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
 DragAcceptFiles(Form1.Handle, true);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DragAcceptFiles(Form1.Handle, false);
end;
Ответить с цитированием