私はデルファイにVCLアプリケーションを持っています。1つのメインフォームと多くの子フォーム。一度に1つのフォームのみが開かれるようにする方法。つまり、フォームを開くと、前のフォームが閉じます。または、ユーザーが以前と同じフォームを開こうとしても、何もしません。メインフォームでフォームを開くためのコード:
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;
子フォームは、クローズイベントで自己解放されます。