2009-06-04 19 views
2

TSpeedButtonを強制的に再描画する必要がありますか?TSpeedButtonを平坦化しますか?

タッチスクリーンモニタを使用すると、マウスがボタンから移動しないため、別のボタンをクリックしても盛り上がった枠線が画面上に残ります。

答えて

3

タッチスクリーンなしで再現することはできませんが、私が正しく理解すれば、誰かがボタンに触れると熱くなります(下が真であるか強調表示されている場合は上がります)。しかし、別のボタンに触れると、マウス出口がトリガーされず、熱くなります。あれは正しいですか?

これを解決する方法はいくつかあります。おそらく最も単純なのは、各クリックイベントに、ボタンを離してマウスを動かすメソッドを呼び出すことです。

Mouse.CursorPos := Point(0,0); 

これで十分でない場合は、クリックされたボタンを無効にし、マウスを移動してリフレッシュしてから再度有効にすることができます。 無効になっているボタンは熱くなることはできません。マウスを離して1秒間無効にした後にボタンを有効にするタイマーが必要な場合がありますが、マウスを動かすだけで十分です。

また、タッチしたばかりのボタンにマウスカーソルが残っていると、いつもチーズと思っていたので、これでタッチシステムの見栄えがよくなりました。

+0

ジムありがとう、これは素晴らしい作品です。私はおそらくそれをオフにするオプションが必要になります、それは実際のマウスを使用すると奇妙です。 – stukelly

+0

あなたは正しいです、別のボタンをタッチすると、マウスの出口はトリガーしません。 – stukelly

+0

これは、マウスが何らかの理由で別のコントロールに移動したことを検出したときにOnExitを起動するはずなので、VCLのバグのようです。どのバージョンのDelphi/BCBを使用していますか? –

2

フラットプロパティをTrueに設定してみましたか?

+0

ボタンは変更されませんでした。私はそれがMouseInControlプロパティと何か関係があるかもしれないと思う。 – stukelly

+0

あまりにも悪いです。しかし、試してみる価値がありました。 – gabr

関連する問題