Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
ВнизDrag and Drop Найти похожие ветки
← →
GeLLeR © (2007-03-25 10:58) [0]Привет всем!
Я хочу сделать перетаскивание например с рабочего стола в 2 листбокса. Раньше я писал прогу
и там добавлял всё в 1 листбокс, вот код:procedure TMainForm.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;
procedure TMainForm.DropFiles(var Mes: TWmDropFiles);
var
N, i: Integer;
FlNm: String;
begin
N := DragQueryFile(Mes.Drop, $FFFFFFFF, nil, 0) - 1;
TRY
for i := 0 to N do
begin
SetLength(FlNm, 100000);
DragQueryFile(Mes.Drop, i, PChar(FlNm), 100000);
FlNm := PChar(FlNm);
ListBox1.Items.Add(FlNm);
end;
FINALLY
DragFinish(Mes.Drop);
END;
end;
Собственно вопрос- как сделать чтобы если я перетаскиваю в 1 листбокс, добавлялось в 1, а
если во 2, то во 2???
Спасибо.
← →
RASkov (2007-03-25 11:37) [1]
procedure AddFile(const FL: String; Lst: TListBox);
begin
if Assigned(Lst) then Lst.Items.Add(FL) else
Form1.ListBox1.Items.Add(FL);
end;
procedure TMainForm.DropFiles(var Mes: TWmDropFiles);
var N, i: Integer;
FlNm: String;
L: TListBox;
P: TPoint;
begin
N:=DragQueryFile(Mes.Drop, $FFFFFFFF, nil, 0)-1;
I:=0;
GetCursorPos(P);
L:=TListBox(FindControl(WindowFromPoint(P)));
try
for I:=0 to N do begin
SetLength(FlNm, MAX_PATH);
DragQueryFile(Mes.Drop, I, PChar(FlNm), MAX_PATH);
FlNm:=PChar(FlNm);
AddFile(FlNm, L);
end;
if N>=0 then AddFile("<<***Добавлено "+IntToStr(N+1)+" файл(а,ов)***>>", L);
finally DragFinish(Mes.Drop); end;
end;
Еще так же посмотри DragQueryPoint.
← →
RASkov (2007-03-25 11:51) [2]Т.е лучше вот так:
procedure AddFile(const FL: String; Lst: TWinControl);
begin
if Assigned(Lst) and (Lst is TListBox) then (Lst as TListBox).Items.Add(FL) else
MainForm.ListBox1.Items.Add(FL);
end;
procedure TMainForm.DropFiles(var Mes: TWmDropFiles);
var N, I: Integer;
FlNm: String;
L: TWinControl;
P: TPoint;
begin
N:=DragQueryFile(Mes.Drop, $FFFFFFFF, nil, 0)-1;
I:=0;
GetCursorPos(P);
L:=FindControl(WindowFromPoint(P));
try
for I:=0 to N do begin
SetLength(FlNm, MAX_PATH);
DragQueryFile(Mes.Drop, I, PChar(FlNm), Length(FlNm));
FlNm:=PChar(FlNm);
AddFile(FlNm, L);
end;
if N>=0 then AddFile("<<***Добавлено "+IntToStr(N+1)+" файл(а,ов)***>>", L);
finally DragFinish(Mes.Drop); end;
end;
В предыдущем примере будет ошибка если бросить не на листбокс...
← →
GeLLeR © (2007-03-25 12:07) [3]Спасибо
← →
RASkov (2007-03-25 12:28) [4]В [2] еще есть места где можно подправить, думаю сам разберешься....
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c