Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#1

Selbst erzeugtes Formular schließt sich automatisch

  Alt 2. Mär 2017, 11:41
Delphi-Version: 10 Berlin
Hi Leute,

ich habe ein Formular, dass ich zur Laufzeit ggf. mehrfach für Datenerfassung nutzen will (Also soll sich diese Fenster mehrfach öffnen können).
Diese Formular wird in der IDE fertig gestaltet, aber nicht automatisch erzeugt.

Mein Problem ist, dass es immer nur kurz aufblitzt, dann aber sofort verschwindet. Bei beenden der Application kommt es dann zu einer Zugriffsverletzung, da das Formular wohl nicht mehr da ist.

Das Erzeugen findet in dem Event IdTCPServer1Execute statt. Hier mal der Code:
Delphi-Quellcode:
procedure Tfrm_mainCL.IdTCPServer1Execute(AContext: TIdContext);
var
  DataStream, FileStream : TStream;
  Testfrm: Tfrm_TestCL;
begin
  tempfile:=GetTempDir+FormatDateTime('yyyymmddhhnnsszzz', Now)+'.dat';
  DataStream := TMemoryStream.Create;
  FileStream := TFileStream.Create(tempfile, fmCreate);
  try
    AContext.Connection.Socket.ReadStream(DataStream, -1, true);
    //ShowMessage(Format('Es wurden %d Byte empfangen', [DataStream.Size]));
    DataStream.Position := 0;
    FileStream.CopyFrom(DataStream, DataStream.Size);
    FileStream.Free;
    DataStream.Free;
    Testfrm:=Tfrm_TestCL.Create(Application);
    Testfrm.edt_Name.Text:='';
    Testfrm.edt_AZ.Text:='';
    Testfrm.chk_returnWithDocument.Checked:=Settings.ReturnWithDocument;
    Testfrm.Show;
// with Tfrm_TestCL.Create(Application) do //So habe ich es auch versucht, gleicher Fehler
// begin
// edt_Name.Text:='';
// edt_AZ.Text:='';
// chk_returnWithDocument.Checked:=Settings.ReturnWithDocument;
// Show;
// end;
  except
    FileStream.Free;
    DataStream.Free;
  end;
end;
Im TestCL-Formular wird es dann über Action:=caFree freigegeben. So ist zumindest der Plan.

Hat einer einen Tipp, was ich hier falsch mache?

Gruß Hobbycoder
  Mit Zitat antworten Zitat