Einzelnen Beitrag anzeigen

Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Dynamische Packages - Forms anzeigen - Leak

  Alt 12. Jan 2016, 15:00
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;

Geändert von Sequitar (12. Jan 2016 um 15:34 Uhr)
  Mit Zitat antworten Zitat