Form2关闭后Form1中的操作

时间:2013-09-29 11:01:00

标签: delphi dialog delphi-7 file-manager

我尝试在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 中确认文件夹创建后,我怎么能在 Form1 中调用Refresh程序?

1 个答案:

答案 0 :(得分:2)

重新设计代码以使用TForm.ShowModal()代替,例如:

procedure TfolderFrame.CreateFolder;
begin
  if newFolderDialog.ShowModal = mrOk then
    RefreshAllStuff;
end;

procedure TnewFolderDialog.btnOKClick(Sender: TObject);
begin
  FolderName := edtName.Text;
  if CreateDir(FolderName) then
  begin
    ShowMessage('New folder created!');
    ModalResult := mrOk;
  end
  else
    ShowMessage('Creation failed. Error : '+ IntToStr(GetLastError));
end;

procedure TnewFolderDialog.btnCancelClick(Sender: TObject);
begin
  ModalResult =: mrCancel;
end;

procedure TnewFolderDialog.FormShow(Sender: TObject);
begin
  edtName.Clear;
end;