• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Открыть Файл Перетаскиванием (открыть Файл Drag'n'drop)

Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,562
Баллы
155
Сегодня мы научимся открывать файл перетаскиванием на форму средствами Delphi.

Открывать мы будем текстовый файл и его содержимое отображать в компоненте Memo. Стоит отметить, что открывать таким образом можно любые файлы, а не только текстовые. Все дело в том, что при перетаскивании мы будем получать адрес файла, а уже с этим адресом мы можем делать все, что угодно.

Итак приступим. Для примера нам потребуется создать новое приложение и разместить на его форме компонент TMemo. Все, больше никакие компоненты нам не понадобятся. Следующее, что нужно сделать - подключить модуль ShellAPI в разделе uses. Далее я выложу код программы с комментариями.

Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, Forms, ShellAPI, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
 { Private declarations }
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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


procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
    CFileName: array [0 .. MAX_PATH] of char; // переменная, хранящаяимяфайла
begin
  try
    If DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then
    // Получаем путь к файлу и открывем его
    begin
      if ExtractFileExt(CFileName) = '.txt' then
        Memo1.Lines.LoadFromFile(CFileName);
    end;
  finally
    DragFinish(Msg.Drop); // отпустить файл
  end;
end;

end.
Логика работы следующая:

  1. Мы разрешаем программе принимать файлы drag'n'drop
  2. При перетаскивании мы получаем адрес файла
  3. Проверяем чтобы файл был с расширением "txt"
  4. Открываем файл
Все предельно просто, Delphi

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

позволяет достаточно легко справиться с поставленной задачей .Надеюсь, что все стало на свои места.
 
Вверх Снизу