よろしくお願いします。
1個のSpeedButtonでクリックしたら押されっぱなし、それをクリックしたら出っ張る(解放する)したいのですがうまくいきません。
例えば、ToolButtonでは
if ToolButton1.Down=false then ToolButton1.Down:= true else ToolButton1.Down:=false;ではうまくいくのですが、
SpeedButtonでやりたいのですが、過去ログの
「ON OFF ボタンコントロールにするには?」でGroupIndex、AllowAllUp、Down
の各プロパティの組み合わせで行けるかと回答されています。
どのように組み合わせるのかといろいろやっているのですが・・・。
ヘルプを見ても書いてあることがよく飲み込めません。GroupIndexを1にしておけば押されっぱなしになるのですが、解放ができません。
よろしくお願いします。
AllowAllUpプロパティはtrueですか?
igyさん、ありがとうございます。
AllowAllUpをTRUEにして、GroupIndexを1にして、下記のようにしていますが
凹み状態にもなりません。
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Down= false then
SpeedButton1.Down:=true
else
SpeedButton1.Down:=false;
end;
何か初歩的な設定を忘れているのでしょうか?
よろしくお願いします。
AllowAllUpをTRUEにして、GroupIndexを1にするだけで、
OnClickイベントでは、何もしない(Downプロパティを変更しない)
場合はどうですか?
こんなのはダメですか?
https://www.petitmonte.com/bbs/answers?question_id=849
(トグルボタン風?)
みなさんありがとうございます。
igyさんの、AllowAllUpをTRUEにして、GroupIndexを1にするだけで、・・に対しては
起動時何もしない状態ではボタンはあがったままです。
クリックしても下がったままになりません。
del5さんのご回答については、これは過去ログで一応見ましたが
SpeedButtonを選んだ理由にボタンにImageとテキストを表示したいためで諦めました。
それから、起動時はCheckBoxの形をしているのですが最初からボタンの形にするにはどうしたらいいのでしょうか?。
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
SetWindowLong(CheckBox1.Handle, GWL_STYLE, GetWindowLong(CheckBox1.Handle, GWL_STYLE) or BS_PUSHLIKE);
end;
よろしくお願いいたします。
>igyさんの、AllowAllUpをTRUEにして、GroupIndexを1にするだけで、・・に対しては
>起動時何もしない状態ではボタンはあがったままです。
>クリックしても下がったままになりません。
こちらで試したやり方では、うまくいったのですが・・・
新規プロジェクトに、SpeedButtonを追加し、
AllowAllUpをTRUEにして、GroupIndexを1にし、コンパイル。
クリックしたら下がり、もう一度クリックしたら戻りました。
Delphi7とDelphi2006で試しました。
igyさん、ありがとうございます。
私も新規プロジェクトにSpeedButtonだけ置いて、やっているのですがうまくいきません。
Windows XP Delphi 6 Personalです。
SpeedButtonのOnClickイベントに
if SpeedButton1.Down= false then SpeedButton1.Down:=true
else SpeedButton1.Down:=false;
を実行しているだけです。
いいはずなのですが、不思議です。
他の方法を考えてみます。
ありがとうございました。
igyさん、うまくいきました。
AllowAllUpをFALSEにしておいて、GroupIndexを0にしておいて、
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Down= false then
begin
SpeedButton1.GroupIndex:=1;
SpeedButton1.AllowAllUp:=false;
SpeedButton1.Down:=true;
end
else
begin
SpeedButton1.AllowAllUp:=true;
SpeedButton1.GroupIndex:=0;
SpeedButton1.Down:=false;
end;
end;
でボタンのOnOffができました。
ありがとうございました。
OnClickイベントが発生するときにはDownは変更された後なので、
> if SpeedButton1.Down= false then SpeedButton1.Down:=true
> else SpeedButton1.Down:=false;
で元に戻っている気がします。
> igyさんの、AllowAllUpをTRUEにして、GroupIndexを1にするだけで、・・に対しては
> 起動時何もしない状態ではボタンはあがったままです。
GroupIndexが0以外だと、設計時にDownをTrueにできます。
解決済みのようなので余計かもしれませんが、参考にしていただければと思います。
ツイート | ![]() |