type
TForm1 = class(TForm)
DriveComboBox1: TDriveComboBox;
FileListBox1: TFileListBox;
DirectoryListBox1: TDirectoryListBox;
procedure DriveComboBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
DriverName:Char;
implementation
{$R *.dfm}
function DiskInDrive(Drive: Char): Boolean;
var ErrorMode: word;
begin
//將字母轉為大寫
if Drive in ['a'..'z'] then Dec(Drive, $20);
//確認參數為字母
if not (Drive in ['A'..'Z']) then
raise EConvertError.Create('Not a valid drive ID');
//觸發異常
ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
try
if DiskSize(Ord(Drive) - $40) = -1 then
Result := False
else
Result := True;
finally
SetErrorMode(ErrorMode);
end;
end;
procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
DriveComboBox1.OnChange := nil; //加入这行
if DiskInDrive(DriveComBoBox1.Drive ) then
showmessage('Driver Ready.')
else
showmessage('Driver Not Ready.');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DriveComboBox1.OnChange := nil;//加入这行
end;
procedure TForm1.FormShow(Sender: TObject);
begin
DriveComboBox1.OnChange := Form1.DriveComboBox1Change;
end;
procedure TForm1.DriveComboBox1Click(Sender: TObject);
begin
DriveComboBox1.OnChange := Form1.DriveComboBox1Change;
end;