Hallo,
ich bin am Verzweifeln und hoffe auf Euren Tipp.
Und zwar habe zwei nur Firemonkey Formulare.
Form1 hat z.B. nur mehrere TSwitch-Komponenten, die bei Aktivierung ein neues Fenster Form2 öffnen.
Wenn in Form2 ein Zurück-Button betätigt wird, soll vor dem Schließen die gewählte TSwitch-Komponente wieder zurückgesetzt werden. (.isChecked := false);
Also merke ich mir die Komponente in der Variable
RememberSwitch
, um diese dann in der Prozedur
ResetSelectedSwitch()
ansprechen zu können.
Delphi-Quellcode:
type
public
{ Public-Deklarationen }
procedure ResetSelectedSwitch;
end;
// Formular 1
procedure TForm1.Switch1Switch(Sender: TObject);
var
Dlg: TForm2;
begin
RememberSwitch := TSwitch(Sender);
showmessage(RememberSwitch.Name); // der entsprechende Name der Komponente wird korrekt angezeigt
if TSwitch(Sender).isChecked then
begin
Dlg := TForm2.Create(Self);
Dlg.Show;
end
end;
Und hier ist der Aufruf aus Form2.
Delphi-Quellcode:
// Formular 2
procedure TForm2.btnCancelClick(Sender: TObject);
begin
Form1.ResetSelectedSwitch;
Close;
end;
Und hier entsteht bei der Ausgabe des Namens der gemerkten TSwitch-Komponente eine Zugriffsverletzung.
Delphi-Quellcode:
procedure TForm1.ResetSelectedSwitch;
begin
showmessage(RememberSwitch.Name); // <---- Zugriffsverletzung
TSwitch(RememberSwitch).IsChecked := false;
end;
Ich habe es auch schon vorher über FindComponent() probiert, aber auch hier kam eine Zugriffsverletzung.
Ich freue mich über jedweden Hinweis. Danke.
Amigage