Ok Frame2 wird nicht erzeugt? Verstehe ich nicht. In meinem Beispiel habe ich ja direkt schon einen Frame zur Designtime auf die Form gezogen, daher ging ich (zumal der Frame ja auch angezeigt wird) davon aus, dass er auch erzeugt wird.
Zum Testen habe ich ihn nun auch zur Laufzeit erzeugt:
Code:
procedure TForm1.Button2Click(Sender: TObject);
var
MyFrame: TFrame;
begin
MyFrame := TFrame2.Create(Self);
MyFrame.Parent := Self;
MyFrame.Align := TAlignLayout.Client;
if MyFrame is TFrame2 then
begin
TFrame2(MyFrame).Button1.OnClick(Self);
end;
end;
was allerdings nichts an dem Problem ändert, dass ich eine Zugriffsverletzung bekomme.
Innerhalb des Frames habe ich nun aber etwas verändert:
Code:
procedure Dings;
begin
Frame2.rectangle1.Opacity:=1/6;
end;
procedure TFrame2.Button1Click(Sender: TObject);
begin
self.rectangle1.Opacity:=1/6;
Dings;
end;
Wenn ich dort nun im Button also self statt einer Variable nutze funktioniert das ganze. Wenn ich allerdings in meiner procedure "Dings" genau das gleiche machen will funktioniert es nicht mehr. Warum ist das so?