Hallo erst mal,
ich habe mich jetzt schon tot gesucht zu dem Thema und alle Lösungen die es gibt funktionieren nicht.
Ich generiere zwei TRectangle und einen TButton bei Berührung eines Buttons. Das "InvisiblePanel" ist nicht sichtbar und soll dafür da sein, herauszufinden wann außerhalb des zweiten Rectangles (dem MenuPanel) gedrückt wird.
Delphi-Quellcode:
procedure TForm1.MenuPanel;
var
MP:TRectangle;
IP:TRectangle;
BtnConfig:TButton;
begin
if FindComponent('
InvisiblePanel') =
nil then
begin
//-------------------------------------------> Inivisble Panel
IP:=TRectangle.Create(self);
IP.Parent:=Form1;
IP.
Name:='
InvisiblePanel';
IP.Width:=Form1.Width;
IP.Height:=Form1.Height;
IP.Position.X:=0;
IP.Position.Y:=0;
IP.OnClick:=InvisibleClick;
IP.Fill.Color:=StringToAlphaCOlor('
null');
//-------------------------------------------> Menu Panel
MP:=TRectangle.Create(self);
MP.Parent:=Form1;
MP.
Name:='
MenuPanel';
MP.Width:=300;
MP.Height:=300;
MP.Position.X:=Form1.Width-300;
MP.Position.Y:=73;
//------------------------------------------> Buttons
BtnConfig:=TButton.Create(self);
BtnConfig.Parent:=Form1;
BtnConfig.
Name:='
ButtonConfig';
BtnConfig.Width:=300;
BtnConfig.Height:=50;
BtnConfig.Position.X:=Form1.Width-300;
BtnConfig.Position.Y:=73;
//BtnConfig.OnClick:=ConfigClick;
BtnConfig.ComponentIndex:=2;
BtnConfig.Text:='
Einstellungen';
end
In der InvisibleClick Prozedur sollen dann eigentlich nur ButtonConfig, InvisiblePanel und MenuPanel entfernt werden.
Versuch 1:
Delphi-Quellcode:
procedure TForm1.InvisibleClick(Sender: TObject);
var
MP,
IP:TRectangle;
BtnConfig:TButton;
begin
IP:=FindComponent('
InvisiblePanel')
as TRectangle;
MP:=FindComponent('
MenuPanel')
as TRectangle;
BtnConfig:=FindComponent('
ButtonConfig')
as TButton;
IP.DisposeOf;
MP.DisposeOf;
BtnConfig.DisposeOf;
end;
Die App crasht unter Android.
Versuch 2 (Ich lass den ersten Teil der Prozedur mal weg):
Delphi-Quellcode:
IP.Parent:=nil;
IP:=nil;
IP.DisposeOf;
MP.Parent:=nil;
MP:=nil;
MP.DisposeOf;
BtnConfig.Parent:=nil;
BtnConfig:=nil;
BtnCOnfig.DisposeOf;
Die App crasht unter Android.
Versuch 3:
Delphi-Quellcode:
IP:=nil;
IP.Owner.RemoveComponent(
IP);
IP.free;
MP:=nil;
MP.Owner.RemoveComponent(MP);
MP.free;
BtnConfig:=nil;
BtnConfig.Owner.RemoveComponent(BtnConfig);
BtnConfig.free;
Natürlich Crash.
Solange ich nicht versuche
IP.DisposeOf;
auszuführen, geht alles gut.
Delphi-Quellcode:
MP.DisposeOf;
BtnConfig.DisposeOf;
funktionieren.
Hat jemand eine Idee?