![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как мне узнать количество, выделенных файлов? [D6, WinXP]
Долька © (2005-05-12 07:51:00)Объяню доступно:
procedure TForm1.WMDropFiles(var Msg: TMessage);
Var
Filename: array[0..256] of char;
begin
DragQueryFile(THandle(Msg.WParam),0,Filename,SizeOf Filename));
Memo1.lines.loadfromfile(Filename);
DragFinish(THandle(Msg.WParam));
end;
вот такая есть чудо процедура.
DragQueryFile(THandle(Msg.WParam),0,Filename,SizeOf Filename));
в этой строке 0 указывает на номер файла, т.е. если я выделю несколько файлов и перетащю к себе в Tmemo, к примеру, то получу содержимое файла с указанным номером.
В связи с этим встаёт вопрос:
Как определить количество выделенных файлов при перетаскивании, чтобы можно было прочитать их попорядку: сначала первый, потом второй и т.д.?
Antonn (2005-05-12 13:13:00) [1]GuAV © (12.05.05 12:37) [4]
я указал для кода из [2], при использовании с Msg: TMessage, получается [3].
Долька
используй не (var Msg: TMessage), а (var Message: TWMDropFiles)
или смотри [4]
GuAV (2005-05-12 12:37:00) [2]
> WMDropFiles(var Msg: TMessage);
> Message.drop,
Не понятно, откуда Message.drop, если сообщение объявлено как TMessage.
В случае TMessage DragQueryFile(Message.WParam, $FFFFFFFF, nil, 0));
Долька (2005-05-12 10:16:00) [3]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
protected
procedure WMDropFiles (var Msg: TMessage);
message wm_DropFiles;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMDropFiles(var Msg: TMessage);
Var
Filename: array[0..256] of char;
begin
edit1.text:=inttostr(DragQueryFile(Message.drop, $FFFFFFFF, nil, 0));
DragQueryFile(THandle(Msg.WParam),1,Filename,SizeOf(Filename));
// Теперь в переменной Filename будет находиться путь
// к перетаскиваемому файлу. Далее вы можете выполнять с этим файлом, зная
// его путь, все что угодно.
//Например: Загрузить его в Memo
Memo1.lines.loadfromfile(Filename);
//Сообщаем об окончании претаскивания
DragFinish(THandle(Msg.WParam));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle,True);
end;
end.
вот код программы!
На форме: tmemo и tedit
Значения в tedit получаются астрономические, что не так то?
Antonn (2005-05-12 08:15:00) [4]var Message: TWMDropFiles
Кол-во := DragQueryFile(Message.drop, $FFFFFFFF, nil, 0);
Оно?
MBo (2005-05-12 08:13:00) [5]If the index value is 0xFFFFFFFF, the return value is a count of the dropped files.