12

我不确定为什么 TSpeedButton 具有此属性,但是当 TSpeedButton 是给定 groupindex 的唯一按钮时,无论是否按下“AllowAllUp”,它都不会保持按下状态。也许绝地控制就足够了,但希望有一些解决办法。任何帮助或轶事表示赞赏。

顺便说一句,我(仍在)使用 Delphi 7,不确定这是否是一个全面的难题。

4

11 回答 11

18

我这里没有 D7,但在 D2006 中,如果 GroupIndex 的值 > 0,则 Speedbutton 保持关闭。

如果这不是您希望的行为,您可以在 OnClick-Eventhandler 中手动设置 Down-Property(确保 GroupIndex 为 0)。

于 2008-10-14T20:47:15.920 回答
13

我刚刚在 Delphi 7 (Build 4.453) 中尝试过:

  • 创建新应用程序
  • 添加TSpeedButton到表单
  • AllowAllUp := true;
  • GroupIndex := 1;
  • 运行应用程序

单击按钮时,它会切换其向下状态,而无需任何其他代码。

于 2008-10-15T15:46:06.853 回答
2

Knight_killer 是正确的。我可以告诉你它可以在任何版本的 delphi 中工作:

object SpeedButton1: TSpeedButton
  Left = 152
  Top = 384
  Width = 23
  Height = 22
  AllowAllUp = True
  GroupIndex = 99
end
于 2008-10-14T21:48:12.943 回答
2

Delphi 为您完成工作,因此“不要编写任何代码”。

在 IDE 中选择您要作为一个组操作的所有 SpeedButton,然后将整个组的“GroupIndex”设置为“0”以外的其他值,您就完成了 - 没有代码 - NADA!

于 2011-06-01T15:45:32.477 回答
1

嗯,很奇怪,我记得用这个成功了好几次。也许您应该尝试使用 SpeedButton 的Down属性?我不认为当你点击它时它会自动切换——你应该明确地切换Down,我猜......

[编辑:替换CheckedDown--- TSpeedButton 没有Checked属性,抱歉!]

于 2008-10-14T20:45:15.630 回答
1

要使其正常工作,您不能只切换 Down 属性,因为它在 OnClick 事件中始终处于关闭状态。你需要有另一个值:

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  MyBoolProperty := not MyBoolProperty;
  SpeedButton1.Down := MyBoolProperty;
end;
于 2014-03-10T06:14:01.663 回答
0

我正在为我的问题寻找解决方案,我认为这有点像。我想让 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;

这会在单击按钮时向下切换按钮,并在再次单击按钮时向上切换。

希望它会有所帮助

于 2008-10-29T16:36:28.207 回答
0

诀窍是将 GroupIndex 设置为唯一值并将 AllowAllUp 设置为 true。如果你忘记了第一个,它就不会停下来,如果你忘记了第二个,它就不会再上升,一旦它下降了。

于 2008-10-30T07:17:45.667 回答
0

将 AllowAllup 设置为 true,将 Down 设置为 false。

然后在OnClick事件中:

....
btn.AllowAllUp := not btn.AllowAllUp;
btn.Down       := not btn.Down;
....
于 2013-03-04T23:05:45.050 回答
0

将 AllowAllUp 设置为 True。

将 GroupIndex 设置为非 0。

要将其全部保留在 OnClick 中,请尝试

 with Speedbutton1 do
 begin
      if tag = 1 then tag := 0 else tag := 1;
      down := (tag = 1);
 end;
于 2015-04-03T14:55:50.027 回答
0

GroupIndex对按钮进行分组。该组中只有一个按钮可能处于活动状态。它们都需要具有高于 的相同索引0

AllowAllUp当连续点击 2 次时,允许上下切换按钮。

于 2017-10-20T11:57:58.297 回答