Zitat:
Wie ist das denn beim Show? Bleibt das Programm da quasi im Quelltext stehen und wartet, bis das Formular geschlossen wird, bevor im Finally das Free aufgerufen wird?
Hab's gerade mal unter Delphi 7 ausprobiert: Das auf diese Art und Weise erstellte Formular bekomme ich nicht wirklich zu sehen, ein kurzes Flimmern, bei dem man erahnen kann, dass da irgendwo ein Formular angezeigt werden könnte, ja, aber ein benutztbares Formular? Fehlanzeige.
Das ist mir auch schon aufgefallen, daher habe ich bisher alle Formulare modal erstellt. Wusste nicht wie man das ändert (ausser das formular nicht direkt wieder zu zerstören, was aber auch nichts daran ändert, was nahpets beschreibt: Kurzes Flackern und sonst nichts)
Das Formular könnte theoretisch von unterschiedlichen Anwendungen (oder anderen Formularen) geladen werden. Habe daher jetzt einen "parent" parameter eingefügt, der dann für die Freigabe zuständig sein muss und dem ich als Result die erstellte form zur verfügung stelle:
Delphi-Quellcode:
Function Tplgfrm.Loadform(Parent: Tcomponent; Form:
String; Modal: Boolean)
: TCustomForm;
Var
FormClass: Tformclass;
Begin
Try
Form := '
T' + Form;
FormClass := TFormClass(GetClass(Form));
If FormClass =
Nil Then
Raise Exception.Create('
The form "' + Form + '
" is not available.')
Else
Begin
Result := TComponentClass(FormClass).Create(Parent)
As TCustomForm;
With Result
Do
Try
If Modal
Then
Showmodal
Else
Show;
Finally
// Free;
End;
End;
Except
Raise Exception.Create('
Form could not be loaded.');
End;
End;
//Aufruf
Form := Loadform(Application, '
Formname', True);
Form.Free;