Interessanter Ansatz. Werde ich mal nachverfolgen. Zu deinem Code-Beispiel...da fehlt natürlich noch eine Kleinigkeit:
Delphi-Quellcode:
function ShowFormOnce(AFormClass: TComponentClass): TForm;
var
liZ1: Integer;
begin
Result := nil;
for liZ1 := 0 to Application.ComponentCount-1 do
begin
if (Application.Components[liZ1] is AFormClass) then
begin
Result := TForm(Application.Components[liZ1]);
end;
end;
if (Result <> nil) then
begin
Result := TForm(AFormClass.Create(Application));
end;
if Assigned(Result) then // sonst knallts !!!!
Result.Show;
end;
EDIT: Mal "nachverfolgt". Würde dann so aussehen:
Delphi-Quellcode:
{-Interface-procedure zum Anzeigen der Form-}
procedure FrmClient1_Show;
var
i: Integer;
begin
for i := 0 to Pred(Application.ComponentCount)
do if (Application.Components[i] is TFrmClient1) then
begin
TFrmClient1(Application.Components[i]).Show;
Exit;
end;
with TFrmClient1.Create(Application) do Show;
end;
procedure TFrmClient1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
Einwände? - Verbesserungsvorschläge?
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen