AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form zur Laufzeit schließen

Ein Thema von LoL · begonnen am 16. Dez 2004 · letzter Beitrag vom 16. Dez 2004
Antwort Antwort
LoL
(Gast)

n/a Beiträge
 
#1

Form zur Laufzeit schließen

  Alt 16. Dez 2004, 11:43
Folgendes:

Ich erzeuge ein Form zur Laufzeit:
Delphi-Quellcode:
frm_GraphEdit := TForm.Create(nil);
  with frm_GraphEdit do
    begin
      name := 'frm_GraphEdit';
      Position := poScreenCenter;
      BorderStyle := bsDialog;
      Width := 200;
      OnDestroy := frm_GraphEditClose;
    end;
frm_GraphEdit.ShowModal;
mit einem button drauf:
Delphi-Quellcode:
btbtn_abort := TBitBtn.Create(frm_GraphEdit);
  With btbtn_abort do
    begin
      Parent := frm_GraphEdit;
      Name := 'btbtn_abort';
      OnClick := CloseFrm_GraphEdit;
    end;
Folgendes Ereignis wird ausgelöst wenn man auf den Botton klickt:
Delphi-Quellcode:
procedure TFrm_main.CloseFrm_GraphEdit(Sender : TObject);
begin
  frm_GraphEdit.Destroy;
end;
....
procedure TFrm_main.frm_GraphEditClose(Sender : TObject);
begin
  frm_GraphEdit := nil;
end;
Wenn ich das Form mit ShowModal aufrufe und schließen möchte bekomme ich folgende Exception:
"Invalid Variant Operation"
Wenn ich aber das Form mit Show aufrufe nicht Woran kann das liegen?
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#2

Re: Form zur Laufzeit schließen

  Alt 16. Dez 2004, 12:01
ich habe eine Lösung weis aber noch nicht genau warum sie funktioniert:

ich rufe beim Drücken auf den Button nicht
  frm_GraphEdit.Destroy; sondern
  frm_GraphEdit.Release; Release gibt das Formular erst frei, nachdem die Ausführung der Ereignisbehandlungsroutinen des Formulars und seiner untergeordneten Komponenten beendet ist. Die Methode stellt auch sicher, daß alle Botschaften in der Ereigniswarteschlange des Formulars vor dessen Freigabe bearbeitet werden. In allen Ereignisbehandlungsroutinen sollte Release anstelle von Free verwendet werden, um Zugriffsverletzungen zu vermeiden.

Mist die Hilfe sollte man mal Lesen:
Rufen Sie Destroy nicht direkt auf. Verwenden Sie statt dessen die Methode Release, die eine CM_RELEASE-Botschaft an das Formular sendet. In der zugehörigen Behandlungsroutine wird dann die Methode Free aufgerufen, die ihrerseits Destroy aufruft.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz