На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Использование Drag and drop
Использую Drag and drop (Embarcadero® RAD Studio 10.1 Berlin) для перетаскивания путей к папкам - в Edit.

Стандартный код и на форме только один Edit1.text: Все работает, но вот Как запретить перетягивать файлы, а разрешить перетягивать только папки ?

ExpandedWrap disabled
    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.
проверять перетаскиваемый файл функцией FileGetAttr, для каталога функция вернёт faDirectory
vasya2019, А как это правильно сделать?
ExpandedWrap disabled
    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;
    .......
Сообщение отредактировано: vasya2019 -
Или использовать extractfilepath :no:
vasya2019, Спасибо! Сработало!
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0936 ]   [ 20 queries used ]   [ Generated: 20.03.19, 19:33 GMT ]