Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.17.45] |
|
Сообщ.
#1
,
|
|
|
Использую Drag and drop (Embarcadero® RAD Studio 10.1 Berlin) для перетаскивания путей к папкам - в Edit.
Стандартный код и на форме только один Edit1.text: Все работает, но вот Как запретить перетягивать файлы, а разрешить перетягивать только папки ? unit Unit1; interface uses Winapi.Windows, Winapi.Messages, shellapi, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); private { Private declarations } procedure draganddrop (var msg:TWMDropFiles); message WM_DROPFILES; public { Public declarations } end; var Form1: TForm1; dragfile: array [0..max_path] of char; implementation {$R *.dfm} procedure Tform1.draganddrop(var msg: TWMDRopfiles); begin if dragqueryfile(msg.drop,0,dragfile,max_path)> 0 then form1.edit1.text:=dragfile; end; procedure TForm1.FormCreate(Sender: TObject); begin dragacceptfiles(handle,true); end; end. |
Сообщ.
#2
,
|
|
|
проверять перетаскиваемый файл функцией FileGetAttr, для каталога функция вернёт faDirectory
|
Сообщ.
#3
,
|
|
|
vasya2019, А как это правильно сделать?
|
Сообщ.
#4
,
|
|
|
var Form1: TForm1; dragfile: string; ...... procedure Tform1.draganddrop(var msg: TWMDRopfiles); begin setlength(dragfile,max_path); setlength(dragfile,dragqueryfile(msg.drop,0,pchar(dragfile),max_path)); if FileGetAttr(dragfile) = faDirectory then edit1.text := dragfile; end; ....... |
Сообщ.
#5
,
|
|
|
Или использовать extractfilepath
|
Сообщ.
#6
,
|
|
|
vasya2019, Спасибо! Сработало!
|