Einzelnen Beitrag anzeigen

amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#1

Android: Switch vom vorherigen Formular zurücksetzen

  Alt 19. Aug 2015, 15:05
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
  Mit Zitat antworten Zitat