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;
しかし、それが原因でプログラムが動かなくなりました。
Form2でフォルダの作成を確認した後でのみ、 Form1Refresh
でプロシージャを呼び出すにはどうすればよいですか?