-
Доброго времени суток. Мне нужно наваять следующее: на форме есть либо TListBox, TListView. Эти списки заполнены какими то просто текстовыми значениями, так вот мне нужно, чтобы я мог выделить нужную мне строку и перетянуть в проводник, ну а дальше в зависимости от того что и куда я перетянул, я буду делать определенные действия (создавать файлы к примеру в той папке, куда я перетянул пункт "меню" и т.д.). Как такое вообще реализовать, я даже не знаю как запрос написать в поисковиках. В общей сложности мне нужно отслеживать значение которое я перетянул, и путь (каталог), куда я это перетянул, ну было бы еще хорошо отследить какая клавиша была зажата при перетаскивании (ctrl, shift). Очень буду благодарен за конкретный кусок кода. Заранее спасибо!
-
Drag and Drop Component Suite
-
Нет, пожалуйста, не предлагайте готовые компоненты! Очень буде благодарен коду, желательно по проще, не не компоненты. Хочется знать что ты делаешь и что бы это работало на чистом Делфи без дополнительных компонентов. Даже если код у компонентов открытый будет, разбираться с ним для меня крайне проблематично.
-
-
Такие добрые все. Сами кто нибудь смог понять из этой статьи?
-
Разбираться с открытым кодом компонентов тебе проблематично.
Разбираться со статьей, помогающей разбираться с открытым кодом компонентов для тебя тоже проблематично.
Что тогда не проблематично-то ?)
-
проще нельзя, имхо 6)
TForm1 = class(TForm) btn1: TButton; mmo1: TMemo; procedure btn1Click(Sender: TObject); procedure mmo1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure mmo1DragDrop(Sender, Source: TObject; X, Y: Integer); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject); begin TButton(Sender).BeginDrag(true); end;
procedure TForm1.mmo1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source is TButton; end;
procedure TForm1.mmo1DragDrop(Sender, Source: TObject; X, Y: Integer); begin mmo1.Lines.Add( TButton(Source).Caption); end;
-
> AV © (31.01.12 12:10) [6] > проще нельзя
Алё, гараж) ..Ему между своим приложением и чужим - explorer.exe - нужно таскать-бросать.. А не внутри своего приложения)
-
гараж на связи :)
ну вот так тогда
Procedure WMDropFiles(var Msg: TMessage); message wm_DropFiles;
procedure TSubject.WMDropFiles(var Msg: TMessage); var Filename: array[0 .. 256] of Char; FileStr: string; begin DragQueryFile( THandle(Msg.WParam), 0, Filename, sizeof(Filename) ) ; FileStr:=LowerCase(StrPas(FileName)); FlashWindow(MainForm.Handle,true); DragFinish(THandle(Msg.WParam));
-
> AV © (31.01.12 13:07) [8]
Это сюда оттуда. А туда отсюда ?)
-
Если я правильно помню, то для данной задачи нужно реализовать интерфейсы IDropSource и IDataObject (реализация второго - довольно объемная задача)
-
> А туда отсюда ?)
SaveToFile :) Ни разу не приходилось файл из приложения кидать куда то.
> нужно реализовать интерфейсы IDropSource
бегло просмотрев, вроде да
-
> apic (31.01.12 10:57) [4] > > Такие добрые все. Сами кто нибудь смог понять из этой статьи? >
По приведённым в статье словам гугля выдаст много ссылок на готовые примеры, и даже для делфи. Но сантехникам в программировании поиск не доступен, им кода подавай.
|