Delphi tspeedbutton을 그룹에서 유일하게 누르면 누르게하는 방법

StackOverflow https://stackoverflow.com/questions/202702

  •  03-07-2019
  •  | 
  •  

문제

TSPEEDBUTTON이 왜이 속성을 가지고 있는지 잘 모르겠지만 TSPEEDBUTTON이 주어진 GroupIndex의 유일한 버튼 일 때 "alludAllup"을 누르든지 여부에 관계없이 누르게되지 않습니다. 어쩌면 제다이 통제로 충분하지만, 약간의 수정이 있기를 바랍니다. 모든 도움이나 일화에 감사드립니다.

BTW, 나는 Delphi 7을 사용하고 있습니다. 이것이 보드 수수께끼에 걸쳐 있는지 확실하지 않습니다.

도움이 되었습니까?

해결책

여기에는 D7이 없지만 D2006에서 GroupIndex에 값이> 0이면 SpeedButton이 계속 유지됩니다.

이것이 원하는 동작이 아닌 경우 OnClick-Eventhandler에서 다운 프로페티를 수동으로 설정할 수 있습니다 (GroupIndex가 0 임).

다른 팁

방금 Delphi 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

델파이는 당신을 위해 일을하므로 "코드를 쓰지 마십시오".

IDE에서 그룹으로 작동하려는 모든 SpeedButtons를 선택한 다음 전체 그룹의 "GroupIndex"를 "0"이외의 다른 것으로 설정하고 코드없이 완료됩니다. NADA !!

흠, 이상한, 나는 이것을 성공한 몇 번 사용했던 것을 기억합니다. 아마도 당신은 Speedbutton과 함께 놀아야 할 것입니다 Down 재산? 클릭하면 자동으로 토글을 전환한다고 생각하지 않습니다. Down, 나는 생각한다 ...

편집 : 교체 Checked ~와 함께 Down --- tspeedbutton은 없습니다 Checked 재산, 죄송합니다!

이 작업을 수행하려면 항상 Onclick 이벤트에서 다운 속성을 토글 할 수는 없습니다. 다른 값이 필요합니다.

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  MyBoolProperty := not MyBoolProperty;
  SpeedButton1.Down := MyBoolProperty;
end;

트릭은 GroupIndex를 고유 한 값으로 설정하고 allowallup을 true로 설정하는 것입니다. 첫 번째를 잊어 버리면, 그것은 내려 가지 않을 것입니다. 두 번째를 잊어 버리면, 일단 내려진 후에는 계속 유지되지 않습니다.

allowallup을 true로 설정하십시오.

GroupIndex를 0으로 설정하십시오.

모든 것을 on 클릭에 보관하려면 시도하십시오

 with Speedbutton1 do
 begin
      if tag = 1 then tag := 0 else tag := 1;
      down := (tag = 1);
 end;

GroupIndex 버튼을 그룹화합니다. 그룹의 단 하나만 활성화 될 수 있습니다. 그들 모두는 동일한 지수를보다 높아야합니다. 0.

AllowAllUp 2 번 연속으로 클릭하면 버튼을 아래로 전환 할 수 있습니다.

나는 내 문제에 대한 해결책을 찾고 있었고 이것이 같은 것이라고 생각합니다. 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로 설정하고 거짓으로 설정하십시오.

그런 다음 OnClick 이벤트:

....
btn.AllowAllUp := not btn.AllowAllUp;
btn.Down       := not btn.Down;
....
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top