Einzelnen Beitrag anzeigen

Der schöne Günther

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

AW: segmentbuttons mit case of abfragen möglich?

  Alt 7. Jun 2016, 22:22
Hallo und Herzlich Willkommen in den Heiligen Hallen des Wissens und des Wahnsinns

Was willst du an deinem "segment" groß abfragen? Welcher grade gedrückt ist? Oder willst du mitbekommen wenn sich die Auswahl ändert?

Letzteres ist etwas fummelig, man registriert sich für eine "TSpeedButtonGroupMessage":
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  TMessageManager.DefaultManager.SubscribeToMessage(
    TSpeedButtonGroupMessage,
    procedure(const Sender: TObject; const msg: TMessage)
    begin
      Caption :=
        (Sender as TSpeedButton).Name
        +' from '
        + (msg as TSpeedButtonGroupMessage).Value
        +' was pressed';
    end
  );
end;
Alternativ könntest du allen SpeedButtons den gleichen OnClick -Handler geben und so etwas in der Art:
Delphi-Quellcode:
procedure TForm1.SpeedButtonClick(Sender: TObject);
begin
  if SpeedButton1.IsPressed then
    Caption := 'SpeedButton1 is pressed'
  else if SpeedButton2.IsPressed then
    Caption := 'SpeedButton2 is pressed'
  else
    Caption := 'SpeedButton3 is pressed';
end;
Ansonsten ist da noch die Tag-Eigenschaft von allen Controls. Du gibst deinen drei SpeedButtons die Tags 1, 2 und 3. Dann könnte man den hier machen:
Delphi-Quellcode:
procedure TForm1.SpeedButtonClick(Sender: TObject);
begin
  case (Sender as TSpeedButton).Tag of
    1: Caption := 'SpeedButton1 was pressed';
    2: Caption := 'SpeedButton2 was pressed';
    3: Caption := 'SpeedButton3 was pressed';
  else
    Caption := 'Somewhere, something went terribly wrong';
  end;
end;
Kurzum: Entweder liege ich falsch, oder die GruppenNamen-Eigenschaft sorgt nicht dafür es irgendwo ein Gruppenobjekt gibt, an das man herankommt. Beispielsweise um es nach dem "Index" zu fragen, welcher Button gedrückt ist.
  Mit Zitat antworten Zitat