初嘗試 FileSearch 但回傳值異常,改用 FindFirst/FindNext 標準流程:
procedure TFMForm.Search1Click(Sender: TObject);
var SearchForm: TSearchForm; FileAttrForm: TFileAttrForm;
FindIt, Path: String; SearchRec: TSearchRec; Return: Integer;
begin
SearchForm := TSearchForm.Create(Self);
with SearchForm do
begin
SearchFile.Text := ''; SearchPath.Text := DirectoryOutline.Directory;
if (ShowModal <> idCancel) and (SearchFile.Text <> '') and (SearchPath.Text <> '') then
begin
FindIt := SearchPath.Text + '\' + SearchFile.Text;
Return := FindFirst(FindIt, faAnyFile, SearchRec);
if Return <> 0 then FindIt := ''
else FindIt := ExpandFileName(SearchRec.Name);
end;
if FindIt = '' then
MessageDlg('Cannot find the file in current directory.', mtWarning, [mbOk], 0)
else
begin
Path := ExtractFilePath(FindIt);
FindIt := ExtractFileName(FindIt);
FileAttrForm := TFileAttrForm.Create(Self);
ShowFileAttr(FileAttrForm, FindIt, Path);
end;
end;
end;
TDiskViewForm 對話框,DriveEdit.OnChange 事件即時查詢:
procedure TDiskViewForm.DriveEditChange(Sender: TObject);
var Free, Total: LongInt;
begin
Free := DiskFree(0); // 0 = 當前磁碟機
Total := DiskSize(0);
FreeSpace.Text := IntToStr(Free) + ' bytes.';
TotalSpace.Text := IntToStr(Total) + ' bytes.';
end;
三編輯框 ReadOnly = True 僅供顯示。參數可改為使用者指定磁碟機字母。
見上一節 ViewType1Click 實作。