如何使特尔斐TSpeedButton留压如果这是唯一一个在组
题
我不知道为什么TSpeedButton有这个酒店但是,当一个TSpeedButton是唯一的按钮定groupindex,它不住压,不论是或不是"AllowAllUp"。也许是个绝地武士的控制就足够了,但我希望有一些修正。任何帮助或轶事,表示赞赏。
顺便说一句,我是(仍)使用德尔菲7,不知道如果这是一个全面的难题。
解决方案
我这里没有D7,但是在D2006中,如果GroupIndex的值> gt,则Speedbutton会保持不变。 0
如果这不是您想要的行为,您可以在OnClick-Eventhandler中手动设置Down属性(确保GroupIndex为0)。
其他提示
我只是想说在德尔斐7(建立4.453):
- 创造新的应用程序
- 添加
TSpeedButton
形成 - 设置
AllowAllUp := true;
- 设置
GroupIndex := 1;
- 运行的应用程序
当击按钮就切换其关闭状态,没有任何其他代码的需要。
knight_killer是正确的。我可以告诉你,它适用于任何版本的delphi:
object SpeedButton1: TSpeedButton
Left = 152
Top = 384
Width = 23
Height = 22
AllowAllUp = True
GroupIndex = 99
end
Delphi为您做的工作是“不写任何代码”。
在IDE中选择您的所有SpeedButtons 想要作为一个小组进行操作然后设置整体 group's" GroupIndex"除了“0”之外的其他东西。 你完成了 - 没有代码 - NADA !!
Down
属性?我不认为当你点击它时它会自动切换---你应该明确地切换 Down
,我猜......
[编辑:用 Down
替换 Checked
--- TSpeedButton没有 Checked
属性,抱歉!]
要使其正常工作,您不能只切换Down属性,因为它在OnClick事件中始终处于关闭状态。你需要有另一个值:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
MyBoolProperty := not MyBoolProperty;
SpeedButton1.Down := MyBoolProperty;
end;
诀窍是将GroupIndex设置为唯一值并将AllowAllUp设置为true。 如果你忘记了第一个,它将不会停留,如果你忘记了第二个,一旦它失效就不会熬夜。
将AllowAllUp设置为True。
将GroupIndex设置为非0。
要在OnClick中保留所有内容,请尝试
with Speedbutton1 do
begin
if tag = 1 then tag := 0 else tag := 1;
down := (tag = 1);
end;
GroupIndex
对按钮进行分组。组中只有一个按钮可能处于活动状态。所有这些都需要具有高于 0
的相同索引。
AllowAllUp
允许在连续点击两次时按下和向上切换按钮。
我正在为我的问题寻找解决方案,我认为这是一个相同的问题。 我想让SpeedButton像开关一样切换上下状态,我通过设置属性来管理它:
AllowAllUp := True;
GroupIndex := 1;
然后在我写的按钮的 OnClick
事件中:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if( SpeedButton1.AllowAllUp ) then
begin
SpeedButton1.AllowAllUp := False;
SpeedButton1.Down := True;
end else
begin
SpeedButton1.AllowAllUp := True;
SpeedButton1.Down := False;
end;
end;
单击按钮时,按钮会向下切换,再次单击时按下按钮。
希望它会有任何帮助
将AllowAllup设置为true,将Down设置为false。
然后在 OnClick
事件:
....
btn.AllowAllUp := not btn.AllowAllUp;
btn.Down := not btn.Down;
....