2

すべてのアイテムを表示することを選択したかどうかに基づいて、実行時にアイテムを追加するフローパネルがあります。それはすべてうまくいきます。拡張はツールバーボタンで制御されます。

問題は、ユーザーが「+」記号の上にマウスを移動してセクションを展開できるようにすることです。

代替テキスト

最初はTSpeedButton(OnMouseEnter)を見ましたが、「フラット」の場合でも、フォーカス長方形が表示されているため、グリフが中央に配置されていません。このソリューションの主な問題は、外観です。

それから私はTImageの子孫を作ることを見ました。それは少し「型破り」ですが、うまくいくでしょう。OnMouseEnterまたはOnClickでは、内部ブール値の「拡張」フラグを切り替えてから、リソースから適切な画像をロードします。私はそのような型破りな解決策が嫌いです。

私はそれをいくつかの異なる画面に追加する必要があるので、このためのコンポーネントを持っている/構築するのはおそらく賢明です。私はJVCLを持っていますが、適切なものは何もありません。

コメント/ヘルプありがとうございます!

4

3 に答える 3

6

ModelMaker Code Explorerで使用されるアプローチが常に好きでした。

たとえば、新しいメソッドを追加する場合、めったに使用されないものは折りたたまれて表示されます (下の画像の「オプションとディレクティブ」)。

代替テキスト
(ソース: 17slon.com )

テキストにカーソルを合わせると、実際にはフラットなボタンであることがわかります。(そうではないことを除いて-Gerritはここでカスタムペイントマジックを行っていると思います)。

代替テキスト
(ソース: 17slon.com )

このボタンをクリックすると、パネルが表示されます。ボタンはまだありますが、新しいイメージがあります。クリックしてパネルを閉じることができます。

代替テキスト
(ソース: 17slon.com )

このトグル ボタンの状態は、セッション間で保持されます。IOW、Delphi を再起動しても、次に [メソッドの追加] を呼び出すと、[オプションとディレクティブ] パネルが前回とまったく同じように表示されます。

于 2008-10-02T05:56:21.960 に答える
1

私はそのような型にはまらない解決策が嫌いです。

ここ数年、私は型にはまらないUIソリューションに少し疑念を抱くようになりました。ユーザーが実際にクリックしなければならないボタンを使用しないのはなぜですか? これは、MS Office であれプログラミング ユーティリティであれ、私が使用しているソフトウェアではより一般的なようです。また、ボタンを少し大きくしたいと思います。スクリーンショットでは、マウス カーソルでターゲットにしなければならない小さなものに見えます。ええと、あなたが求めていないアドバイスで私があなたを悩ませているのなら、キャプションとして「+」の代わりに「>>」をつけてみませんか? また、ニーモニックを含むテキスト キャプションを付けると、実際にはキーボードでアクセスできるようになります。これらすべてにより、UI が改善され、より直感的になるはずです。私は推測する。

質問に答えられなくて申し訳ありませんが、ユーザーが実際にこのソリューションを好むかどうかを 2 分間考えていただければ幸いです :-)

幸運を!

于 2008-10-01T22:37:32.217 に答える
0

実際、この状況でTImageを使用するのはかなり一般的なことだと思います。TButtonまたはその関連会社のいずれかが、開発者がやろうとしていることに対して適切な量の制御を持っていなかったときに、多くの人がTImageの使用を提案するのを見てきました。

TBitBtnを試しましたか?テキストを削除すると、関連付けられている画像が中央に配置されると思います。このマシンにインストールしたすべてのDelphi6をチェックインしたところ、MouseMoveイベントが発生しました。

于 2008-10-01T21:48:15.050 に答える