いくつかの要素を非表示にすることで、ユーザーに「クリーンでシンプルな」インターフェイスを提供しようとしています。小さな矢印のみが、メイン メニュー バーの一部を展開できることを示しています。すべてを閉じると、次のようになります。
全部開くとこんな感じ。
各矢印は、パネルの左側にある SpeedButton です。ボタンをクリックすると、Speedbutton の幅 (閉じた状態) と設計時のパネルの幅 (開いた状態) の間で幅が切り替わります。設計時のパネルの幅は定数として格納されます。プロシージャ show_hide_controls がこれを処理します。
procedure TCompose_Main.show_hide_controls (key: string; Button: TSpeedButton; Panel: TPanel; width: Int32);
begin
if GPA.iKey [key] = 1
then Panel.Width := width // show panel, set panel to design width
else Panel.Width := Button.Width; // hide panel, set with to button width
Button.Glyph.Assign (nil);
Images_Left_Right.GetBitmap (GPA.iKey [key], Button.Glyph);
end; // show_hide_controls //
このルーチンは次のように呼び出されます。
show_hide_controls ('Show Play Controls', // index to panel to show/hide
Enlarge_Play, // Speedbutton requesting the enlargement/hide
Panel_Play, // Panel to show/hide
cPlayWidth); // Width of panel when shown
現在、複数のユーザーが、次のようにパネルの一部が非表示になっていると報告しています。
オペレーティング システム (Windows 7) は、スケーリングでいくつかのトリックを行っているようです。このエラーを再現できません。ここで何が起こっているのか誰か理解していますか?そして、設定に依存しない方法でこれに対してプログラムするきちんとした方法はありますか?
更新GDFが彼の答えで正しく指摘したように、フォントのスケーリングに関係しています(コントロールパネル>ディスプレイ)。これは、私のマシンではやや奇妙に動作します。150% に変更すると小さな影響があり、125% に変更すると大きな影響があります。ご想像のとおり、私は最初のスケーリングをテストし、2 番目のスケーリングはテストしませんでした。ユーザーが 125% から 100% にスケールバックしたと報告した場合にのみ、自分のマシンで彼のエラーを再現できました。
何人かの回答者から示唆されたように、フォントと私が抱えている問題との関係を見つけることができませんでした。私のシステムは、Courier (新しいものではない)、Segoe UI、Tahoma、および MS Sans Serif で行ったすべてのテストにまだ苦しんでいます :-D. テキストに合わせてコントロールのサイズが変更される可能性があるため、おそらく間接的です。
これをどのように処理しますか?わかりません。実験を開始し、何かを見つけたらお知らせします。
ご協力ありがとうございました!