Если вы знакомы только с программированием перетаскивания и мало знаете об объектах или других единицах, вам необходимо ознакомиться с использованием объектов, отличных от автоматически созданных форм и компонентов, которые вы перетаскиваете вих.
Код по этой ссылке представляет собой единое целое.Вам необходимо создать новый модуль в вашем проекте (Файл> Создать> Модуль).Это будет выглядеть примерно так:
unit Unit1;
interface
implementation
end.
Теперь при сохранении устройства имя устройства автоматически изменится на имя файла (без расширения), например:
unit MahUSB;
interface
implementation
end.
В этом примере вы должны использовать то же имя устройства, что и источник, который вы пытаетесь использовать.Сохраните модуль как «MahUSB.pas», и он должен находиться в той же папке, что и остальная часть вашего проекта (или в другом месте, просто предложение).Скопируйте / вставьте весь код с этого веб-сайта и замените все в этом модуле.
Теперь, чтобы реально использовать это, вам нужно создать экземпляр этого объекта.ТОЛЬКО ОДНА ИНСТАНЦИЯ (я говорю это только потому, что, судя по всему, не нужно больше одного).
Очень важно : Поскольку вы не знакомы с объектами, позвольте мне быстро кое-что объяснить.Объекты должны быть созданы для того, чтобы работать.В то же время все, что создано, также должно быть бесплатным, когда вы закончите с ним.В этом случае мы создадим этот объект при запуске приложения и освободим его при закрытии приложения.
Теперь в вашей ГЛАВНОЙ ФОРМЕ (а не в любых других формах) вам необходимо поместить обработчик событий для обоих OnCreate.и ОнДестрой.Вам также нужно объявить переменную для представления этого объекта.В объявлении вашей основной формы добавьте переменную «USB» с типом этого объекта.Удостоверьтесь, что это идет под секцией 'private' или 'public', любой из них в порядкеТакже убедитесь, что вы объявляете модуль «MahUSB» в верхней части основного блока в предложении использования.
Объявление объекта в основной форме:
type
TForm1 = class(TForm)
private
USB: TUsbClass;
public
end;
Создание / освобождение объекта приВаше приложение запускается / закрывается:
procedure TForm1.FormCreate(Sender: TObject);
begin
USB:= TUsbClass.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if assigned(USB) then USB.Free;
end;
Теперь мы еще не закончили.Теперь нам нужно добавить обработчики событий.Обратите внимание, что в верхней части этого устройства есть два типа: TOnDevVolumeEvent и TOnUsbChangeEvent .Это типы событий.Параметры в обработчиках событий должны быть идентичны параметрам, объявленным в этих типах.Итак, теперь в вашей основной форме объявите эти процедуры обработчика событий ...
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
USB: TUsbClass;
procedure VolumeEvent(const bInserted : boolean; const sDrive : string);
procedure ChangeEvent(const bInserted : boolean;
const ADevType,ADriverName, AFriendlyName : string);
public
end;
Теперь еще одна вещь, которую мы должны сделать, прежде чем это сработает.Объект USB должен знать, какие обработчики событий использовать, поэтому нам нужно назначить эти процедуры событиям.После создания вашей формы нам нужно назначить эти события ...
procedure TForm1.FormCreate(Sender: TObject);
begin
USB:= TUsbClass.Create;
USB.OnUsbChange:= Self.ChangeEvent;
USB.OnDevVolume:= Self.VolumeEvent;
end;
Когда все сказано и сделано, ваш основной блок формы должен выглядеть примерно так:
unit uUSBTest;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MahUSB;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
USB: TUsbClass;
procedure VolumeEvent(const bInserted : boolean; const sDrive : string);
procedure ChangeEvent(const bInserted : boolean;
const ADevType,ADriverName, AFriendlyName : string);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ChangeEvent(const bInserted: boolean; const ADevType,
ADriverName, AFriendlyName: string);
begin
ShowMessage('Change event for "'+AFriendlyName+'"');
end;
procedure TForm1.VolumeEvent(const bInserted: boolean;
const sDrive: string);
begin
ShowMessage('Volume event for "'+sDrive+'\"');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
USB:= TUsbClass.Create;
USB.OnUsbChange:= Self.ChangeEvent;
USB.OnDevVolume:= Self.VolumeEvent;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if assigned(USB) then USB.Free;
end;
end.
Ивот ты где!У вас будут эти две процедуры-обработчики событий, где вы сможете дополнительно обработать любое из этих двух событий.