![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 66
|
![]()
Всем привет!
Есть форма на ней имеется компанент Panel. Мне нужно узнать имя файла перетаскиваемо именно на Panel а не на форму. Делаю так для всей формы, то получается узнать имя файла: DragAcceptFiles(Handle, true); Но мне вся форма не нужна, то делаю так: DragAcceptFiles(Panel1.Handle, true); Ну тогда не работает ниже выложенный код. Как его переделать именно для Panel ? Код:
Последний раз редактировалось Stilet; 06.12.2013 в 12:47. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 06.01.2011
Сообщений: 369
|
![]()
Примеры привести не могу, но возможные пути решения:
1. Сделать компонент-наследник TPanel (радикально и красиво) ...или... 2. Воспользоваться функцией DragQueryPoint, которая, если не ошибаюсь, возвращает координаты курсора в момент сбрасывания файлов на форму. Если координаты внутри панели - делай, что нужно. Также для общего развития предлагаю почитать вот это
Программирую по необходимости
|
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 20.02.2010
Сообщений: 66
|
![]() Цитата:
Мой вопрос иной. Как переделать данную процедуру только к Panel а не ко всей форме? |
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 06.01.2011
Сообщений: 369
|
![]() Цитата:
Программирую по необходимости
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 66
|
![]()
Пытаюсь создать новый компонент, но ни черта не выходит.
unit DPanel; interface uses SysUtils, Classes, Controls, ExtCtrls, Messages, Dialogs, ShellApi; type TDPanel = class(TPanel) private { Private declarations } protected { Protected declarations } public procedure WMDropFiles (var Msg: TMessage); message wm_DropFiles; { Public declarations } published { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TDPanel]); end; procedure WMDROPFILES(var Msg: TMessage); var i, amount, size: integer; Filename: PChar; begin Amount := DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255); for i := 0 to (Amount - 1) do begin size := DragQueryFile(Msg.WParam, i, nil, 0) + 1; Filename := StrAlloc(size); DragQueryFile(Msg.WParam, i, Filename, size); ShowMessage(StrPas(Filename)); StrDispose(Filename); end; DragFinish(Msg.WParam); end; end. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 20.02.2010
Сообщений: 66
|
![]()
Всем спасибо. Решил проблему так.
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Dragdrop в Virtualtreeview | NaumOff | Компоненты Delphi | 0 | 14.11.2012 00:01 |
Перемещение файлов и папок из файловых менеджеров с помощъю DragDrop | hon | Компоненты Delphi | 1 | 12.01.2012 01:37 |
Перетаскивание | Drulya | C# (си шарп) | 0 | 15.09.2011 16:51 |
ListView DragDrop | Vipa | Компоненты Delphi | 10 | 07.08.2009 11:21 |