Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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;
Ответить с цитированием
  #2  
Старый 19.08.2013, 10:38
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

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

надо добавить
Код:
for i:=0 to 5 do // раз
  begin
    if PtInRect(a[i].BoundsRect, p)
    then
      a[i] := a[i];  // не понимаю эту строчку - это для дебага
      a[i].Items.add('Фото');
      break; // два
   end; 
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025