Unknown memory leak form delphi xe8 -


i created simple application button on form tform1 used create form tform2. form2 contains toolbar 2 buttons @ each corner , label tabcontrol below it. keep getting memory leak below. im sure created , destroyed forms correctly.

screenshot of error

program project1;  uses   system.startupcopy,   fmx.forms,   unit1 in 'unit1.pas' {form1},   unit2 in 'unit2.pas' {form2};  {$r *.res}  begin    reportmemoryleaksonshutdown := true;   application.initialize;   application.createform(tform1, form1);   application.run; end. 

here form1 creates form2

unit unit1;  interface  uses   system.sysutils, system.types, system.uitypes, system.classes, system.variants,   fmx.types, fmx.controls, fmx.forms, fmx.graphics, fmx.dialogs,   fmx.controls.presentation, fmx.stdctrls, unit2;  type   tform1 = class(tform)     button1: tbutton;     procedure button1click(sender: tobject);   private     { private declarations }   public     { public declarations }   end;  var   form1: tform1;  implementation  {$r *.fmx}  procedure tform1.button1click(sender: tobject); begin         hide;         application.createform(tform2, form2);         form2.show;         form2.windowstate := twindowstate.wsmaximized; end;  end. 

form 2 toolbar , tabcontrol

form2 layout pic

unit unit2;  interface  uses   system.sysutils, system.types, system.uitypes, system.classes, system.variants,   fmx.types, fmx.controls, fmx.forms, fmx.graphics, fmx.dialogs, fmx.stdctrls,   fmx.tabcontrol, fmx.controls.presentation;  type   tform2 = class(tform)     toolbar1: ttoolbar;     button1: tbutton;     tabcontrol1: ttabcontrol;     tabitem1: ttabitem;     tabitem2: ttabitem;     label1: tlabel;     button2: tbutton;     procedure formclose(sender: tobject; var action: tcloseaction);   private     { private declarations }   public     { public declarations }   end;  var   form2: tform2;  implementation  {$r *.fmx}  procedure tform2.formclose(sender: tobject; var action: tcloseaction); begin   action := tcloseaction.cafree;   // showmessage('form freed closing whole application') ;   application.mainform.close; end;  end. 

as said in comments, can not reproduce memory leak reports code have shown. maybe chasing wrong goose, i'll take chance guesswork.

you never explained why treating form1 way are, got strange feeling may login form. if case follows:

project1.dpr

program project1;  uses   system.startupcopy,   fmx.forms,   unit1 in 'unit1.pas' {form1},   unit2 in 'unit2.pas' {form2},   system.uitypes;  // modal result  {$r *.res}  begin   reportmemoryleaksonshutdown := true;   application.initialize;    form1 := tform1.create(application);   try   if form1.showmodal <> system.uitypes.mrok     exit;       form1.free;   end;    application.createform(tform2, form2);   application.run; end. 

note form1 not created application.createform. reason first form created application.createform becomes main form of application , closing close application. instead let form2, main ui is, become main form can free form1 not needed after login.

now need set modal result of login form (form1), example (but want make more secure):

procedure tform1.button1click(sender: tobject); begin   if (edit1.text = 'user') , (edit2.text = 'pass')     modalresult := system.uitypes.mrok; end; 

let me know if not @ looking , i'll delete.


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -