AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung segmentbuttons mit case of abfragen möglich?

segmentbuttons mit case of abfragen möglich?

Ein Thema von iFox · begonnen am 7. Jun 2016 · letzter Beitrag vom 8. Jun 2016
Antwort Antwort
iFox

Registriert seit: 7. Jun 2016
3 Beiträge
 
#1

segmentbuttons mit case of abfragen möglich?

  Alt 7. Jun 2016, 20:44
ich habe 3 speedbuttons zu einem einzigen segment gemacht und dafür auch einen gemeinsamen gruppennamen vergeben.

ich möchte mit Button1 eine berechnung durchführen. wie kann ich dabei das segment (bestehend aus den 3 x speedbuttons) mit case of abfragen? evtl. anhand des gruppennamens vielleicht? mit If klappte das iwie net
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 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
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: segmentbuttons mit case of abfragen möglich?

  Alt 8. Jun 2016, 07:57
Ich verwende Alternative 2. Funktioniert tadellos. Für erweiterten Komfort kann man seiner Formklasse ja noch ein private Member spendieren, daß die aktuell gedrückte Taste beinhaltet...

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: segmentbuttons mit case of abfragen möglich?

  Alt 8. Jun 2016, 08:03
Vielleicht übersehe ich ja etwas, aber könnte man nicht einfach den Sender auswerten? Für irgendwas muss dieser Parameter ja gut sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: segmentbuttons mit case of abfragen möglich?

  Alt 8. Jun 2016, 08:09
Ich hoffe doch sehr, daß der TE im OnClick Event genau sowas macht, aber zusätzlich zu einem anderen Zeitpunkt den "Clickzustand" der Gruppe benötigt.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
iFox

Registriert seit: 7. Jun 2016
3 Beiträge
 
#6

AW: segmentbuttons mit case of abfragen möglich?

  Alt 8. Jun 2016, 10:55
ok habt zunächst vielen dank für eure lösungsvorschläge. ich glaube den fehler bei meiner if-variante gefunden zu haben.

aus
if speedbutton3.ispressed = true and speedbutton5.ispressed = true then

muss

if speedbutton3.ispressed and speedbutton5.ispressed = true then

ach ja die Basics

Geändert von iFox ( 8. Jun 2016 um 12:31 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: segmentbuttons mit case of abfragen möglich?

  Alt 8. Jun 2016, 13:18
Eigentlich müsste:

if (speedbutton3.ispressed = true) and (speedbutton5.ispressed = true) then sprich bei der Verknüpfung von mehreren boolchen Aussagen (mit and oder or) müssen diese in Klammern, damit der Compiler? das richtig auswerten kann. Gilt vor allem eher bei sowas:

Delphi-Quellcode:
if (Alter = 18) and (Nachname = 'Horst') then
//
In dem konkreten Fall hier ist es aber noch besser den Vergleich mit true ganz wegzulassen, Gründe kann man vielfachst hier im Forum nachlesen, d.h. am saubersten wäre:

if speedbutton3.ispressed and speedbutton5.ispressed then
Ralph
  Mit Zitat antworten Zitat
iFox

Registriert seit: 7. Jun 2016
3 Beiträge
 
#8

AW: segmentbuttons mit case of abfragen möglich?

  Alt 8. Jun 2016, 14:03
auch diesen tipp nehme ich gerne mit, danke dir
  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 11:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz