8

いくつかの要素を非表示にすることで、ユーザーに「クリーンでシンプルな」インターフェイスを提供しようとしています。小さな矢印のみが、メイン メニュー バーの一部を展開できることを示しています。すべてを閉じると、次のようになります。

ここに画像の説明を入力

全部開くとこんな感じ。

ここに画像の説明を入力

各矢印は、パネルの左側にある 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. テキストに合わせてコントロールのサイズが変更される可能性があるため、おそらく間接的です。

これをどのように処理しますか?わかりません。実験を開始し、何かを見つけたらお知らせします。

ご協力ありがとうございました!

4

1 に答える 1

10

あなたの問題が私が信じているものである場合、あなたは答えを述べただけです。Windows 7 では、特定のフォントのスケーリングが行われます。Win7 を PC にインストールすると、モニターのサイズがチェックされ、モニターのサイズに応じて「デフォルト」のスケール設定が 100% または 125% になります。問題は、同時にフォント ファイルをコンピュータにインストールすることです。一部のフォントでは、異なる「デフォルト」に異なるフォント ファイルを使用します。

あなたのアプリは MS Sans Serif を使用していると思います... これは、Win7 が (デフォルト) として使用しているスケールに応じて、異なるフォント ファイルのインストールを取得するフォントの 1 つです。

これを確認するには、スケールをデフォルトとして設定するようにユーザーに指示してもらいます。デスクトップを右クリックし、左下の [パーソナライズ] を選択してから [表示] を選択すると、これを表示できます。

次のリンクは、使用中のフォント ファイルを元の http://www.rlvision.com/misc/windows_7_font_bug.aspに戻す方法を示しています。

ただし、このフォントを使用せずにレイアウト要素を更新して、Win7 および過去の OS で必要に応じて機能するようにします。

これは、あなたが提供した限られた量の情報を考えると、あなたが扱っていると思います...

更新 125% と 150% の間で異なる外観について言及したときに思い出したので. 2 つの異なる MS Sans Serif ファイルは、縮尺が異なると見栄えがよくなることをご承知おきください。フォント ファイルの 1 つは、100% と 150% ではきれいに見えますが、125% ではひどいものです。もう 1 つのフォント ファイルは 125% では見栄えがよくなりますが、100% と 150% では見栄えが悪くなります。

どのフォントファイルがどれであるかはよく覚えていませんが、2つの犯人は1)SSERIFF.FON 2)SSERIFE.FONであることはわかっています

于 2012-05-31T20:29:46.923 に答える