Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2008, 22:45   #11
kiber_punk
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 16
По умолчанию

гм.. действительно, в справочнике немного по теме описано =(
kiber_punk вне форума Ответить с цитированием
Старый 30.11.2008, 06:20   #12
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Как организовать drag&drop из менеджере файлов...
Цитата:
Как организовать Drag&Drop из менеджера файлов?

Чтобы организовать Drag&Drop, добавьте в вашу форму обработку системного сообщения WM_DROPFILES. Следующий код нужно поместить в защищенную секцию деклараций вашей формы:
...
procedure WMDropFiles(var msg : TMessage); message WM_DROPFILES;
...

Вы можете активировать процесс drag&drop как обычно, вызовом DragAcceptFiles() в событии OnCreate, and дезактивировать повторным вызовом DragAcceptFiles() по событиям OnClose или OnDestroy.

Вот этот код:

procedure TForm1.WMDropFiles(var msg : TMessage);
var
i, n : word;
size : word;
fname : string;
hdrop : word;
begin
{1. Получаем хэндл для drop.}
hdrop := msg.WParam;
{2. Определяем количество файлов для drop.}
n := DragQueryFile(hdrop, $ffff, nil, 0);
{3. В цикле читаем их имена с полными путями.}
for i := 0 to (n - 1) do begin
{4. Получаем размер файла.}
size := DragQueryFile(hdrop, i, nil, 0);
{5. Проверяем, чтбы общая длина имени не превышала 255 символов}
if size < 255 then begin
fname[0] := Chr(size);
{6. Берем очередной файл.}
DragQueryFile(hdrop, i, @fname[1], size + 1);
{-- Повторяем для всех файлов. --}
end;
end;
{7. Возвращаем признак завершения - ноль.}
msg.Result := 0;
{8. Выполняем "родной" обработчик.}
inherited;
end;

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

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DragAcceptFiles(Handle, false);
end;

Не забывайте, что не всякий TWinControl способен принять "брошенный" на него файл.
mihali4, ауууууууууууу!!!!

Последний раз редактировалось Altera; 30.11.2008 в 06:24.
Altera вне форума Ответить с цитированием
Старый 30.11.2008, 12:49   #13
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот пример для мемо (кидаем на него файлы .txt):
Код:
procedure TForm1.WMDropFiles(var Msg: TMessage);
var Filename: array[0 .. 256] of Char;
    Count   : integer;
begin
DragQueryFile(THandle(Msg.WParam), 0,{ это номер файла } Filename,SizeOf(Filename));
Memo1.Lines.LoadfromFile(FileName);
msg.Result := 0;
inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(Handle, False);
end;
Дальше - подключайте "серое вещество" и... вперед!
(Для "особо одаренных" имя перетаскиваемого файла выделил жирным.
А хамства не терплю.
Дальше - сами.)

Последний раз редактировалось mihali4; 30.11.2008 в 22:22.
mihali4 вне форума Ответить с цитированием
Старый 30.11.2008, 19:51   #14
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Михалыч, тебя спрашивают как обработать drag&drop если в create прописать dragacceptfiles(memo1.Handle,true); memo будет принимать файлы,но как узнать их имена.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 30.11.2008, 20:07   #15
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Можно из тогоже фаил неима выдрать, читаем строчку FileName с конца к началу, чтобы найти последний '/' Далее от этого слеша присваиваем некоторой переменной все до '.' - это и будет нашим именем файла.

Если я все правильно понял =\\

Последний раз редактировалось Zeraim; 30.11.2008 в 20:10.
Zeraim вне форума Ответить с цитированием
Старый 01.12.2008, 06:09   #16
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Zeraim Посмотреть сообщение
Можно из тогоже фаил неима выдрать, читаем строчку FileName с конца к началу, чтобы найти последний '/' Далее от этого слеша присваиваем некоторой переменной все до '.' - это и будет нашим именем файла.

Если я все правильно понял =\\
Цитата:
Сообщение от Deight Посмотреть сообщение
Михалыч, тебя спрашивают как обработать drag&drop если в create прописать dragacceptfiles(memo1.Handle,true); memo будет принимать файлы,но как узнать их имена.
есть вункция такая в sysUtils, называется extractFileName
Ещё есть extractFilePath, ..Dir, ..Ext, ..Drive;
Altera вне форума Ответить с цитированием
Старый 01.12.2008, 09:11   #17
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Altera при чем тут моя цитата? Я имею ввиду полные имена. Тема как называется? Как у формы обработать drag&drop это понятно а как у компонента?
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить и запомнить количество отрицательных элементов каждого столбца для матрицы A(10,10) , B (15,20) bitmania Помощь студентам 3 15.10.2008 01:06
русский хелп для компонента ICQ client xakkkkker Компоненты Delphi 1 26.08.2008 01:46
Drag'n'Drop файла в ListBox D-Snaker Компоненты Delphi 2 07.08.2008 15:51
Drag'n'drop в Гридах _SERGEYX_ БД в Delphi 1 05.09.2007 16:56