我在delphi有VCL應用程序。一種主要形式和許多兒童形式。 如何確保一次只打開一個表單。換句話說,如果一個表單被打開,它將關閉以前的表單。或者,如果用戶嘗試打開與之前相同的表單,它將不會執行任何操作。 代碼在我的主要形式開放的形式:如何在delphi中只保留單個窗體打開
procedure TFMainForm.OpenForm(const classname: string);
var
c: TPersistentClass;
f: TForm;
begin
c := GetClass(classname);
if c <> nil then
begin
f := TForm(TControlClass(c).Create(nil));
f.Parent := Self;
f.Show;
end;
end;
子窗體自我釋放的接近事件。
與Form.Parent相當危險的破解。也許更好地使用MDI並確保它始終最大化? http://docwiki.embarcadero.com/RADStudio/en/Building_a_VCL_Forms_MDI_Application_Without_Using_a_Wizard –
@Arioch,我看不到到自己創建的,雖然形式分配父母任何危險,但你說得對,它看起來像OP試圖使一個MDI應用程序錯誤的方式。 – TLama
是的,你是對的。我嘗試製作MDI應用程序。但是我想讓孩子填寫主要表格的一小部分。因此,我將子窗體設置爲無邊界,並將子窗體的父窗體設置爲主窗體。 –