Я пытаюсь сделать файловый менеджер в Delphi, и мне нужно иметь возможность создавать новые папки.
Итак, я получил свою Основную форму, и когда я нажимаю кнопку Create New Folder
, появляется другая форма, где я могу ввести имя новой папки и подтвердить или отменить создание.
Поэтому я создал новую форму для создания папки и сделал ее невидимой.
Я сделал это так - здесь у меня есть процедура в Главной форме
procedure TfolderFrame.CreateFolder;
begin
newFolderDialog.Visible:=true;
end;
А вот и новая форма папки
unit FolderDialog;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,fileOperations, StdCtrls;
type
TnewFolderDialog = class(TForm)
edtName: TEdit;
lblName: TLabel;
btnOK: TButton;
btnCancel: TButton;
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
FolderName:String;
kindOfAction:char;
hasUpdated:Boolean;
end;
var
newFolderDialog: TnewFolderDialog;
implementation
{$R *.dfm}
procedure TnewFolderDialog.btnOKClick(Sender: TObject);
begin
FolderName:=edtName.Text;
if CreateDir(FolderName)
then begin
ShowMessage('New folder created!');
end
else begin
ShowMessage('Creation failed. Error : '+ IntToStr(GetLastError));
end;
newFolderDialog.edtName.Clear;
newFolderDialog.Close;
hasUpdated:=True;
end;
procedure TnewFolderDialog.btnCancelClick(Sender: TObject);
begin
newFolderDialog.edtName.Clear;
newFolderDialog.Close;
end;
procedure TnewFolderDialog.FormActivate(Sender: TObject);
begin
hasUpdated:=false;
end;
end.
Проблема в том, что при вызове TfolderFrame.CreateFolder;
просто сделайте форму новой папки видимой, и тогда процедура завершится. Но мне нужно сделать некоторые другие вещи после того, как папка будет создана, что-то вроде Refresh
или что-то в этом роде.
Я пытался сделать это так:
procedure TfolderFrame.CreateFolder;
begin
newFolderDialog.Visible:=true;
while not (newFolderDialog.hasUpdated) do begin
if(newFolderDialog.hasUpdated) then
RefreshAllStuff;
end;
end;
Но программа просто застряла из-за этого.
Как я мог вызвать процедуру Refresh
в Form1 только после подтверждения создания папки в Form2?