![]() |
SpeeedButton Properties: Down nicht manipulierbar
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:
Der Code ist Bestandteil eines Delphi Kurses. Ziel ist es einen Kniffel-Klon zu programmieren.
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; *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. :nerd: Grüße! |
AW: SpeeedButton Properties: Down nicht manipulierbar
OH lesen nicht vergessen.
![]() |
AW: SpeeedButton Properties: Down nicht manipulierbar
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:
|
AW: SpeeedButton Properties: Down nicht manipulierbar
|
AW: SpeeedButton Properties: Down nicht manipulierbar
Zitat:
Zitat:
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! |
AW: SpeeedButton Properties: Down nicht manipulierbar
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; |
AW: SpeeedButton Properties: Down nicht manipulierbar
Hallo,
mache mal ein Minimal-Bsp. 1 BitBtn, 1 SpeedBtn. Und dann
Delphi-Quellcode:
Dann hänge das Projekt als Zip hier an, also das ganze Verzeichnis ohne die Exe.
procedure TForm1.BitBtn1Click(Sender: TObject);
begin SpeedButton1.Down:= not SpeedButton1.Down; // Fürs Debuggen if Sender=nil then begin end; end; |
AW: SpeeedButton Properties: Down nicht manipulierbar
Zitat:
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! :love: Grüße! |
AW: SpeeedButton Properties: Down nicht manipulierbar
Zitat:
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. |
AW: SpeeedButton Properties: Down nicht manipulierbar
Zitat:
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! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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 by Thomas Breitkreuz