1

できるだけ早くVB6から移行しますが、その間に、ビルドサーバーのコマンドラインからVB6アプリケーションのビルドを開始しました。

問題:ビルドサーバーに基本的なビデオアダプターがあり、フォーム自体の高さと幅ではなく、基本的なアダプターの解像度までフォームが切り捨てられます。

私たちが発見した回避策の1つは、各フォームの読み込みイベントに移動し、[フォームのプロパティ]ウィンドウで高さと幅のプロパティを観察されたサイズに手動で設定する必要があります。

うーん..

このアプリケーションには数十のフォームが関係しており、今後さらに数十のフォームを含むアプリケーションが増えます。これを処理するスクリプトを作成したいと思います。

2つの質問:

1)コード/プロジェクトなどのどこに、[プロパティ]ウィンドウに表示されているフォームの高さと幅が表示されますか?* .frmファイルを検索しても、勝者は見つかりません。また、*。frxファイルを操作して、既知の高さまたは幅を16進数に変換(検索)することもありません。

2)すべてのフォームを編集する以外に何かできることはありますか?

前もって感謝します。

ジョン

4

4 に答える 4

3

FRM 形式は、VB6 のマニュアルに記載されています。Angry Jim が観察したように、高さと幅は Twips で格納されると書かれています。ClientHeight と ClientWidth については説明していませんが、OneNerd と cmsjr が言っているように、それはフォームの内部のサイズです (メニュー バーと境界線なし)。StartupPosition が手動に設定されているフォームがある場合、ビルド サーバーは ClientLeft と ClientTop も変更している可能性があります。

実行時にフォームの高さと幅を設定しないでください。これらには、メニュー バーと境界線が含まれます。これらは、Windows のバージョンやテーマによって太さが異なります。そのため、間違ったサイズが表示されます。代わりに、フォームの内部の寸法である ScaleHeight と ScaleWidth を設定します。VB6 ランタイムは、それらから適切な高さと幅を計算します。

最後に、新しいビルド サーバー(または新しいビデオ カード)を購入するだけです。すべての開発者を、燃えるたいまつと熊手を振っている上司に導きます。または、PC のコストと開発者の時間のコストの違いを冷静に説明するだけでもかまいません。

于 2009-04-04T09:43:06.080 に答える
2

.frm ファイルをメモ帳またはプレーン テキスト エディターで開くと、フォーム サイズは上から数行で定義されます。

例えば:

 ClientHeight    =   8445
 ClientLeft      =   60
 ClientTop       =   450
 ClientWidth     =   9960

問題が発生した理由はわかりません-奇妙に思えます-しかし、ビルドサーバーが問題を引き起こしている場合、私が見る唯一のオプションは、(1)ビルドサーバーを変更する(またはおそらくビデオカードをアップグレードする)か、書き込みます言及した各フォームのロード イベントのコード。ただし、IDE で postion->center を設定している場合はフォームの中央揃えに影響する可能性があるため、それが目的の結果である場合は、フォームがまだ中央に配置されていることを確認してください。 .

于 2009-04-04T01:30:40.130 に答える
0

これに基づいて、プロパティ ウィンドウに表示される高さは、フォームの ClientHeight (.frm にある) + 境界線とタイトル バーの高さを含む計算値であると言えます。したがって、ClientHeight はおそらく探している数値です。

于 2009-04-03T21:35:20.133 に答える
0

高さと幅は Twips (デバイスに依存しない測定単位) で格納されるため、適切な値を取得するには、で割る必要がありScreen.TwipsPerPixelXますScreen.TwipsPerPixelY。ほとんどのディスプレイでは、これは 15 になります (OneNerd の例の幅を使用すると、9960 twips は 664 ピクセルになります)。

于 2009-04-04T02:52:00.810 に答える