SSTAB上のコントロールの表示について

解決


さかな  2003-09-12 20:45:45  No: 79392

【OS】Windows NT 4.0 Workstation
【VBのVer】VisualBasic6.0 
お世話になっています。さかなと申します。
ディスプレイ解像度を800*600にして、SSTABを使用して画面を作成しました。
SSTABのTabsプロパティを5にして、各Tab上にコントロール(Picturebox,CommandButton,Label)を作りました。

画面作成後に解像度800*600にて実行した場合は問題ないのですが、
解像度1024*768にて実行した場合、初期表示のTabではコントロールが表示されるのですがその他のタブをクリックした場合、コントロールがまったく表示されません。なぜこのような現象が生じるのでしょうか?

よろしくお願いいたします。


吉野  2003-09-16 21:30:32  No: 79393

こちらで、同じような事をしてみましたが、そのような不具合は発生しませんでした。
因みに、
WindowsNT4.0 SP6
VisualBasic6.0 SP5
解像度は無関係だと思いますが、試しに解像度1024*768で作成してはどうでしょうか(恐らく結果は同じだと思いますが・・・(汗))


さかな  2003-09-17 02:57:02  No: 79394

ご解答ありがとうございます。

吉野さんの言われるとおり、まず解像度800*600と1024*768にて、
フォーム上に、SSTAB(Tabsプロパティ=3)を作成し、各Tab上にコントロールを
作成し、解像度800*600と解像度1024*768にて実行すると、初期表示以外のTabに
ついても特に問題なく表示されました。

今回のような現象が生じる場合としては、解像度800*600と1024*768の両方で
表示できるように、自分自身で作成した下記のような共通関数を使用した場合
に今回の現象が生じてしまいます。

ただ単に、フォーム上のコントロールのサイズを調整しているだけなのですが
原因がつかめません。なぜこのような現象が生じるのでしょうか?

よろしくお願いいたします。
********************************************************************
''画面解像度取得用API
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex&) As Long

''画面調整関数
Public Function DspSize(fname As Form) As Single
    
    Dim i As Integer
    Dim cname As Object
    Dim xrate ,yrate As Double
    Dim A&, B&
    
    A = GetSystemMetrics(SM_CXSCREEN)
    B = GetSystemMetrics(SM_CYSCREEN)
    
    If A = 1024 Then  ''1024*768の場合は調整
        xrate = 1024 / 800
        yrate = 768 / 600
    Else
        xrate = 1
        yrate = 1
    End If
    
    For i = 0 To fname.Controls.Count - 1
        Set cname = fname.Controls(i)
        ※実際は、各コントロール別で調整しています。
        If TypeOf cname Is Image Then
            cname.Left = cname.Left * xrate
            cname.Width = cname.Width * xrate
            cname.Top = cname.Top * yrate
            cname.Height = cname.Height * yrate
        else
            cname.Left = cname.Left * xrate
            cname.Width = cname.Width * xrate
            cname.Top = cname.Top * yrate
            cname.Height = cname.Height * yrate
        end if
    next


さかな  2003-09-17 07:17:21  No: 79395

自ら解決することができました。

本当にありがとうございました。
また、よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加