DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プロパティ値の表示

環境/言語:[WindowsXP(SP2)、VB6(SP5)、その他自作のdll]
分類:[VB6以前]

.netが普及する昨今、未だにVB6(SP5)を使っております。。。
vbのフォームデザイン画面でのプロパティ値はvb側でどういう処理で表示しているのでしょう?

工場出荷時状態のマシンAとBにWindowsXP(SP2),VB6(SP5)の環境を作成し、
同じvbのfrmファイルを読み込むと
topやleftといったプロパティ値が変わって表示されてしまうのです。
違いといえばメーカーがDELLとTOSHIBAくらいでしょうか。
BIOSも違うのかな。

一部問題があって、どうしても同じ値で表示させたいのです。
表示の単位が違うのかと思ってFormのScaleModeもいじってみたのですが変化無しでした。
どなたかご存知の方いたら教えて下さい。よろしくお願い致します。
> 工場出荷時状態のマシンAとBにWindowsXP(SP2),VB6(SP5)の環境を作成し、
> 同じvbのfrmファイルを読み込むと
> topやleftといったプロパティ値が変わって表示されてしまうのです。

#サイズではなく位置が変わる?
#実行時ではなくIDEでの現象?

元々のTop,Left,Height,Widthの値は?
同じくStartupPositionの値は?
2つのPCの解像度、フォント(大きい、小さい)は?
と、とりあえず聞いてみる。
まどか様早速のご返答ありがとうございます。

> #サイズではなく位置が変わる?
> #実行時ではなくIDEでの現象?
IDE(vbのexeではなくvbpファイルを開いた開発環境)で
Formのデザイン画面を開いて、プロパティ値を見ると既に値が変わっています。

> 元々のTop,Left,Height,Widthの値は?
> 同じくStartupPositionの値は?
> 2つのPCの解像度、フォント(大きい、小さい)は?
> と、とりあえず聞いてみる。

実際の値を挙げると、
Top=176 : Left=140 : Height=61 : Width=300
StartupPosition=2(画面の中央)
マシンDELLノート
 ・解像度=1400x1050(1024x768でプロパティ値を見てもダメでした)
 ・フォントサイズ=標準
マシンTOSHIBAノーオ
 ・解像度=1024x768
 ・フォントサイズ=標準
です。
正常に表示されるのはTOSHIBAノートでDELLノートだけ表記がおかしいんです。

他の部分でもおかしな点があります。
両機共ウイルスバスターCorpが入っているのですが
TOSHIBAノートは正常にフォントが表示されるのに対し、
DELLノートは長い文字列が改行されて表示されてしまいます。

XPになってから全角の処理が(半角でしたっけ?)変更されたため
アプリケーションでの文字列表示がおかしくなってしまうらしいですね。
ですが、2000とXPで表示が違うのは納得いきますが
同じXP(SP2)同士で表示が違うというのは何故なのでしょう?
これも少なからず原因の1つなのでしょうか…。
上記のスレは説明不足でした…編集キーつけてなかったので再度投稿します。

実際の値を挙げると、
Top=176 : Left=140 : Height=61 : Width=300

Top=220 : Left=175 : Height=76.25 : Width=375
に変わってしまいます。
何度も投稿失礼します…削除キーつけとこうorz

> #サイズではなく位置が変わる?
ええとよく見ると位置もサイズも変わっていません。プロパティ値の表示だけが異なっているのです。

ちなみに
ラインコントロールを配置しているのですが、それだけ両機とも同じ値で表示されています。
X1=0 : X2 = 1024 : Y1 = 139 : Y2 = 139
(このコントロールだけ位置がズレています)
  • 題名: Re[1]: プロパティ値の表示
  • 著者: 百日紅
  • 日時: 2005/11/02 14:58:46
  • ID: 13584
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2005/11/02(Wed) 14:59:16 編集(投稿者)
2005/11/02(Wed) 14:59:13 編集(投稿者)

すいません…わかっちゃいました(´д`;)
DPIの設定が通常96DPIなのですが120DPIだったための現象でした。

>Top=176 : Left=140 : Height=61 : Width=300
>が
>Top=220 : Left=175 : Height=76.25 : Width=375
上記のまとめを見ると(自分で書いたのですが…)それぞれ0.8倍になっています。
DPIも120→96にすると0.8倍に…機械って正直ですorz

お騒がせいたしました_(._.)_
解決済み!
> ええとよく見ると位置もサイズも変わっていません。プロパティ値の表示だけが異なっているのです。

VBでの既定の単位はTwipです。これは解像度に依存しない単位です。
つまり解像度により値が変わりません。
今回の場合、単位がPixelになっているのではないでしょうか?

ちなみに、
TwipからPixelを求める手段としてScreen.TwipsPerPixelX(Y)プロパティがあります。
例えば、通常1024x768で小さいフォントでは15で、大きいフォントでは12です。
大小という言葉と値が逆転してるように感じるでしょうが、値はTwip数です。
つまりPixelあたりの表現量と考えると良いでしょう。(消費量ではありません)
すべてTwipで設定されていればその値が変わらないのでその相対値も変わりません。
ところがフォントはポイントですので同じ解像度で小さいフォントより大きいフォントのほうが
表示に使われるPixel数が増えます。
小さいフォントでデザインしたフォームを同一解像度の大きいフォントで表示した際に
テキストボックスなどで表示される文字数が少なくなるのはこのためです。
この例で言うと15/12倍になります。

> ラインコントロールを配置しているのですが、それだけ両機とも同じ値で表示されています。
> X1=0 : X2 = 1024 : Y1 = 139 : Y2 = 139
> (このコントロールだけ位置がズレています)

これもPixelが単位のためと思われます。

DOBON.NET | プログラミング道 | プログラミング掲示板