AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE SpeeedButton Properties: Down nicht manipulierbar
Thema durchsuchen
Ansicht
Themen-Optionen

SpeeedButton Properties: Down nicht manipulierbar

Ein Thema von Minz3 · begonnen am 18. Jul 2019 · letzter Beitrag vom 18. Jul 2019
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Minz3
Minz3

Registriert seit: 18. Jul 2019
Ort: Thüringen
48 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 13:59
Huhu Gemeinde,

ich bin schon seit einer Weile ein stiller Leser und habe bisher auch immer recht schnell Lösungsansätze gefunden. Danke schon mal dafür!
Jetzt habe ich allerdings auch mal ein kleines Problem, welches ich zur Sprache bringen möchte. Also hab ich mich fix registriert und da bin ich.

Ich möchte mit Hilfe eines BitButtons die "Down" Eigenschaft eines SpeedButtons manipulieren, also true bzw. false setzen. Leider gelingt es mir nicht, diesen Status zu verändern. Nicht einmal im Eigenschaften-Fenster lässt sich der Haken setzen. Die Option "AllowAllUp" bringt leider auch nicht das gewünschte Ergebnis.
Das Setzen des Status im Quellcode funktioniert ebenso wenig, hier mal der Code für den BitButton:
Delphi-Quellcode:
procedure TMainForm.Dice1Click(Sender: TObject);

begin
   if Take1.Down = true then
  begin
    Take1.Down := false;
    exit;
  end;

  if (Take1.Down = false) and (Dice1.Caption = '0') then
    application.messagebox ('Bitte erst würfeln!', 'Fehler', mb_OK + mb_IconExclamation)
  else
    Take1.Down := true;

  if RollButton.Enabled then
    RollButton.SetFocus;
end;
Der Code ist Bestandteil eines Delphi Kurses. Ziel ist es einen Kniffel-Klon zu programmieren.
*Edit: "Dice1" ist ein BitButton, welcher "Take1" (SpeedButton) manipulieren soll. "RollButton" ist ebenfalls ein BitButton, welche dann zum "würfeln" gedacht ist.

Hoffe ich konnte mich soweit verständlich ausdrücken.

Grüße!
Attention:
Brain.exe has stopped working. Reboot the system in 3... 2... 1... ... ... ... Attempt failed.

Geändert von Minz3 (18. Jul 2019 um 14:05 Uhr) Grund: Erklärung der Variablennamen
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#2

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:07
OH lesen nicht vergessen. Delphi-Referenz durchsuchenVcl.Buttons.TSpeedButton.Down sagt: GroupIndex darf nicht 0 sein.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#3

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:10
Damit Down funktioniert, muss GroupIndex einen Wert <> 0 haben.

Down wird dann für alle die Speedbuttons aktuallisiert, die über den gleichen GroupIndex verfügen.

Hat man z. B. 10 SpeedButtons und davon sind 5 mit GroupIndex = 1 versehen, so führt das Setzen von Down auf True für einen dieser SpeedButtons dazu, dass Down für die anderen 4 SpeedButtons mit GroupIndex = 1 auf False gesetzt wird.

Die 5 SpiedButtons, deren GroupIndex <> 1 ist, bleiben davon unberührt.

Zitat von Delphi 7-Hilfe:
VCL-Referenz
GroupIndex (Eigenschaft von TSpeedButton)

TSpeedButton Siehe auch

Die Eigenschaft GroupIndex ermöglicht das Gruppieren mehrerer Mauspalettenschalter.

Delphi-Syntax:

property GroupIndex: Integer;

C++ Syntax:

__property int GroupIndex = {read=FGroupIndex, write=SetGroupIndex, default=0};

Beschreibung

Mit GroupIndex können Sie festlegen, wie sich der Schalter beim Anklicken verhält.

Hat GroupIndex den Wert 0, ist der Schalter von den anderen Schaltflächen im Formular unabhängig. Klickt der Benutzer auf diesen Schalter, wird er gedrückt angezeigt. Sobald der Benutzer die Maustaste loslässt, wird er wieder in seinen nicht gedrückten Zustand versetzt.

Ist GroupIndex größer als 0, bleibt der Schalter ausgewählt (gedrückt), wenn der Benutzer auf ihn klickt. Durch das Klicken auf einen ausgewählten Schalter wird dieser in den nicht gedrückten Status versetzt, es sein denn, Caption hat den Wert False. Wird die Eigenschaft GroupIndex eines einzelnen Mauspalettenschalters auf einen Wert größer als 0 gesetzt, verhält sich der Schalter wie eine Schaltfläche mit zwei Zuständen, sofern Caption True ist.

Mauspalettenschalter, die denselben Wert in der Eigenschaft GroupIndex aufweisen (dieser Wert darf nicht Null sein), fungieren als Gruppe. Wenn der Benutzer auf einen dieser Mauspalettenschalter klickt, bleibt dieser gedrückt, bis der Benutzer auf einen anderen Schalter der Gruppe klickt. Auf diese Weise verwendete Mauspalettenschalter bieten dem Benutzer Auswahlmöglichkeiten an, die sich gegenseitig ausschließen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:12
Hallo,
http://docs.embarcadero.com/products...tton_Down.html

GroupIndex muss >0 sein.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Minz3
Minz3

Registriert seit: 18. Jul 2019
Ort: Thüringen
48 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:13
Zitat:
GroupIndex darf nicht 0 sein.
Zitat:
Damit Down funktioniert, muss GroupIndex einen Wert <> 0 haben.

Down wird dann für alle die Speedbuttons aktuallisiert, die über den gleichen GroupIndex verfügen.

Hat man z. B. 10 SpeedButtons und davon sind 5 mit GroupIndex = 1 versehen, so führt das Setzen von Down auf True für einen dieser SpeedButtons dazu, dass Down für die anderen 4 SpeedButtons mit GroupIndex = 1 auf False gesetzt wird.

Die 5 SpiedButtons, deren GroupIndex <> 1 ist, bleiben davon unberührt.
Hey,

Danke für die schnellen Antworten, eins hab ich vergessen zu erwähnen. Den "GroupIndex" hatte ich bereits mal geändert. Allerdings lässt sich der Status dann genau ein Mal ändern und bleibt dann auf true. Ich krieg ihn dann weder per Code noch im Eigenschaften-Fenster zurückgesetzt.

Ich glaub ich hab da ein Feature gefunden.

Grüße!
Attention:
Brain.exe has stopped working. Reboot the system in 3... 2... 1... ... ... ... Attempt failed.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#6

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:21
Bei allen betroffenen SpeedButtons auch den gleichen Wert für GroupIndex gesetzt?

Sonst geht das nicht.

Hab' hier gerade ein Programm laufen, bei dem das einwandfrei funktioniert (seit bestimmt schon 10 Jahren), sowohl beim Anklicken per Maus, als auch durch Setzen im Quelltext.

Delphi-Quellcode:
procedure TMainForm.Dice1Click(Sender: TObject);
begin
  if Take1.Down then
    Take1.Down := false
  else begin
    if (not Take1.Down) and (Dice1.Caption = '0') then
      application.messagebox ('Bitte erst würfeln!', 'Fehler', mb_OK + mb_IconExclamation)
    else
      Take1.Down := true;

    if RollButton.Enabled then
      RollButton.SetFocus;
  end;
end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:26
Hallo,
mache mal ein Minimal-Bsp.

1 BitBtn, 1 SpeedBtn.

Und dann
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  SpeedButton1.Down:= not SpeedButton1.Down;

  // Fürs Debuggen
  if Sender=nil then
  begin

  end;
end;
Dann hänge das Projekt als Zip hier an, also das ganze Verzeichnis ohne die Exe.
Heiko

Geändert von hoika (18. Jul 2019 um 14:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Minz3
Minz3

Registriert seit: 18. Jul 2019
Ort: Thüringen
48 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:28
Zitat:
Bei allen betroffenen SpeedButtons auch den gleichen Wert für GroupIndex gesetzt?
Oh shit... Ja sowas in der Art war es.

Also der Fehler ist jetzt behoben. Es haben wohl einige Faktoren hier hineingespielt.
Ich hatte mehrere SpeedButtons mit dem selben GroupIndex versehen. 6/7 waren disabled und 1/7 war enabled, mit welchem ich dann getestet hatte. Als ich den GroupIndex vom einzigem eingeschalteten Button geändert hatte ( von 1 auf 2 ) funktionierte der Spaß.

Allerdings sollte doch für die Buttons im selben Index es keine Rolle spielen, ob die anderen Buttons enabled oder disabled sind oder doch?

Aber danke nochmals für die echt schnellen Antworten!

Grüße!
Attention:
Brain.exe has stopped working. Reboot the system in 3... 2... 1... ... ... ... Attempt failed.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#9

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:37
Allerdings sollte doch für die Buttons im selben Index es keine Rolle spielen, ob die anderen Buttons enabled oder disabled sind oder doch?
Doch, in einem GroupIndex kann nur ein Button Down = True haben, die anderen werden automatisch auf False gesetzt.
Innerhalb eines GroupIndex kann immer nur ein Button gedrückt sein.
Man kann aber für alle Buttons in einem GroupIndex Down auf False setzen, also dafür Sorgen, dass kein Button gedrückt ist.
Das gleichzeitige Drücken mehrere Buttons in einem GroupIndex ist jedoch nicht möglich.
  Mit Zitat antworten Zitat
Benutzerbild von Minz3
Minz3

Registriert seit: 18. Jul 2019
Ort: Thüringen
48 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: SpeeedButton Properties: Down nicht manipulierbar

  Alt 18. Jul 2019, 14:44
Allerdings sollte doch für die Buttons im selben Index es keine Rolle spielen, ob die anderen Buttons enabled oder disabled sind oder doch?
Doch, in einem GroupIndex kann nur ein Button Down = True haben, die anderen werden automatisch auf False gesetzt.
Innerhalb eines GroupIndex kann immer nur ein Button gedrückt sein.
Man kann aber für alle Buttons in einem GroupIndex Down auf False setzen, also dafür Sorgen, dass kein Button gedrückt ist.
Das gleichzeitige Drücken mehrere Buttons in einem GroupIndex ist jedoch nicht möglich.
Ok verstanden.
Aber wie genau verhalten sich dann die "ausgeschalteten" Buttons? Ich hatte jetzt das Gefühl, dass diese verhindert haben, den Status des einen Buttons zu ändern.

Grüße!
Attention:
Brain.exe has stopped working. Reboot the system in 3... 2... 1... ... ... ... Attempt failed.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:38 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