AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Schon wieder TToggleSwitch

Ein Thema von Willie1 · begonnen am 20. Dez 2018 · letzter Beitrag vom 21. Dez 2018
 
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Schon wieder TToggleSwitch

  Alt 20. Dez 2018, 16:29
Und was ist wenn der eingeschaltete auf AUS geschaltet wird, sollen dann KEINER auf EIN stehen?

Jedenfalls: Das Problem liegt darin dass der Profi der TToggleSwitch verbrochen hat das OnClick -Event auslösen lässt wenn du die State -Eigenschaft änderst.

Mach ein ShowMessage(..) oder Memo1.Lines.Add(..) oder Debugger-Haltepunkt in deine Routine und du siehst dass die Methode somit mehrmals aufgerufen wird.


//// Edit

Eine Lösung könnte z.B. sein dass du das OnClick-Event der Switches temporär deaktivierst wenn du den Status umstellst:


Delphi-Quellcode:
type
   TToggleSwitchHelper = class helper for TToggleSwitch
      procedure setToOffWithoutEvent();
   end;

procedure TForm1.toggleSwitchClick(Sender: TObject);
var
   tsNr, i: Integer;
   componentName: TComponentName;
begin
   tsNr := (Sender as TToggleSwitch).Tag;

   for i := 1 to 4 do
      begin
         componentName := 'ToggleSwitch' + i.ToString();
         if (i <> tsNr) then
            (FindComponent(componentName) as TToggleSwitch).setToOffWithoutEvent()
      end
end;

procedure TToggleSwitchHelper.setToOffWithoutEvent();
var
   onClickEvent: TNotifyEvent;
begin
   onClickEvent := OnClick;
   try
      OnClick := nil;
      State := TToggleSwitchState.tssOff;
   finally
      OnClick := onClickEvent;
   end;
end;

Geändert von Der schöne Günther (20. Dez 2018 um 16:44 Uhr)
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz