1

コントロールを使用してTNumberBox(少なくとも Windows では、おそらく他のプラットフォームでも)、新しい値を入力し、ボタン ( TButton) を押して変更を保存すると、TNumberBox.Valueプロパティを読み取ると、編集が行われる前の元の値が返されます。 . コントロールがフォーカスを失うまで、この値にはアクセスできません。

変更を保存するために使用されるCanFocusボタンで、アプリのすべてのボタンとともに、そのプロパティを意図的に無効にしました。これは、私が使用しているスタイル (Jet) では、フォーカスされたボタンがひどく見えるためです (暗い灰色の背景に黒いテキスト)。言うまでもなく、モバイル プラットフォームでは、私の場合、フォーカスは実質的に役に立ちません。

CanFocusそれ以外の場合、この保存ボタンを無効にしないと、フォーカスが から適切に取り除かれTNumberBox、そのValueプロパティは問題ありません。ただし、CanFocus保存ボタンを無効にすると、このコントロールからフォーカスが外れることがないため、そのValueプロパティを読み取ると古い値が返されます。

Value保存ボタンを に変更せずに、プロパティが正しい新しい値を返すようにするにはどうすればよいCanFocusですか?

KillFocusOnReturnユーザーはオプションではない「Return」または「Enter」を押す必要があることを認識する必要があるため、有効にすることは役に立ちません。

ノート

イベントを利用した場合も、この問題は解決しませんTNumberBox.OnChangeTracking。新しい値を読み取れない場合、このイベントがどのように役立つかわかりません。

4

2 に答える 2

0

少なくとも汚い回避策を発見しました。ボタンのCanFocusプロパティを有効にし、ボタンをクリックすると、最初にフォーカスをTNumberBoxコントロールに戻す必要があります。これにより、コントロールからフォーカスを外す (値を更新する) と同時に、ボタンからフォーカスを外す (したがって、見栄えの悪さを回避する) ことができます。

TNumberBox.OnChangeTrackingただし、そこから を利用して読み取る場合、これは適切ではありませんValue

于 2015-06-18T23:23:01.443 に答える