Newsgroup: it.comp.appl.access
Titolo: Visualizzazione Maschere su 15" o 17" (800 x 600 - 1024 x 768)

Scusate ma volevo risolvere un problema:
ho un DB che gira, tramite rete, su diversi PC. Il problema è che alcuni di
questi usano un monitor 15" ed altri (tipo il mio) un 17".
Sono stato costretto allora a fare delle maschere che siano visualizzate per
intero sui 15" e quindi sul mio 17" mi rimane un casino di spazio non
utilizzato, che visivamente non è molto bello.
Vi chiedo se c'è un codice tramite il quale, in base alla risoluzione del
monitor (800 x 600 - 1024 x 768), adatti la grandezza della maschera.
Grazie a chi mi aiuta (sempre che sia riuscito a far capire qualcosa).

 ha scritto nel messaggio
news:GjDE6.76470$s93.7...@news.infostrada.it...

Forse qualcosa che ti aiuti sul Sito Comune (link qui sotto) c'è.
Ad esempio nella Sezione Forms c'è una FAQ di Alberto Marchi intitolata
"Ridimensionamento automatico dei controlli di una maschera.".
Nella Sezione General c'è una FAQ di Carlo Costarella intitolata "Modificare
la risoluzione video."
Magari con le dritte che trovi lì più il comando Size chissà che......
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 monitor (800 x 600 - 1024 x 768), adatti la grandezza della maschera.
Tempo fa avevo avuto lo stesso problema e, sfruttando le routine presenti
nel Sito Comune, avevo scritto questo codice da inserire in un modulo:
Private Declare Function apiGetSys Lib "user32" _
    Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Private Const SM_CXVSCROLL = 2
Private Const SM_CYHSCROLL = 3
Private Const SM_CYCAPTION = 4
Private Const SM_CXBORDER = 5
Private Const SM_CYBORDER = 6
Private Const SM_CXDLGFRAME = 7
Private Const SM_CYDLGFRAME = 8
Private Const SM_CYVTHUMB = 9
Private Const SM_CXHTHUMB = 10
Private Const SM_CXICON = 11
Private Const SM_CYICON = 12
Private Const SM_CXCURSOR = 13
Private Const SM_CYCURSOR = 14
Private Const SM_CYMENU = 15
Private Const SM_CXFULLSCREEN = 16
Private Const SM_CYFULLSCREEN = 17
Private Const SM_CYKANJIWINDOW = 18
Private Const SM_MOUSEPRESENT = 19
Private Const SM_CYVSCROLL = 20
Private Const SM_CXHSCROLL = 21
Private Const SM_DEBUG = 22
Private Const SM_SWAPBUTTON = 23
Private Const SM_RESERVED1 = 24
Private Const SM_RESERVED2 = 25
Private Const SM_RESERVED3 = 26
Private Const SM_RESERVED4 = 27
Private Const SM_CXMIN = 28
Private Const SM_CYMIN = 29
Private Const SM_CXSIZE = 30
Private Const SM_CYSIZE = 31
Private Const SM_CXFRAME = 32
Private Const SM_CYFRAME = 33
Private Const SM_CXMINTRACK = 34
Private Const SM_CYMINTRACK = 35
Private Const SM_CXDOUBLECLK = 36
Private Const SM_CYDOUBLECLK = 37
Private Const SM_CXICONSPACING = 38
Private Const SM_CYICONSPACING = 39
Private Const SM_MENUDROPALIGNMENT = 40
Private Const SM_PENWINDOWS = 41
Private Const SM_DBCSENABLED = 42
Private Const SM_CMOUSEBUTTONS = 43
Private Const SM_CMETRICS = 44
Public Function AdattaAVideo(f As Form) As Boolean
    On Error Resume Next
    Dim risp, rapporto As Double, fsize As Integer
    Dim ctl As Control
    risp = Val(fGetSysStuff("resolution"))
    rapporto = risp / 640
    For Each ctl In f.Controls
      ctl.Height = ctl.Height * rapporto
      ctl.Width = ctl.Width * rapporto
      ctl.Top = ctl.Top * rapporto
      ctl.Left = ctl.Left * rapporto
      fsize = ctl.FontSize * rapporto
      risp = DMax("DimCarat", "T_DimensioniCaratteri", "[DimCarat] <= val("
& fsize & ")")
      ctl.FontSize = risp
    Next
End Function
Function fGetSysStuff(strWhat As String) As String
' ritorna con "resolution" la risoluzione dello schermo
' ritorna con "windowsize" la dimensione massima ottenibile in finestra
Dim strRet As String
    Select Case LCase(strWhat)
        Case "resolution": strRet = apiGetSys(SM_CXSCREEN) & "x" _
                                        & apiGetSys(SM_CYSCREEN)
        Case "windowsize": strRet = apiGetSys(SM_CXFULLSCREEN) & "x" _
                                        & apiGetSys(SM_CYFULLSCREEN)
    End Select
    fGetSysStuff = strRet
End Function
Note:
La tabella T_DimensioniCaratteri è una tabella in cui ho riportato, in un
unico campo DimCarat, le dimensioni standard dei font di caratteri
utilizzate: questo x evitare di usare dimensioni non standard con la
conseguente deformazione del font stesso.
Le maschere erano state create in 640x480.
Controlla i risultati in ogni maschera prima di dare il programma al
cliente, perché, ogni tanto, il risultato ottenuto non è ottimale.
L'uso:
dalla maschera, ove ti serva, richiami la funzione con un codice tipo:
Dim risp
risp = AdattaAVideo(Me)
Ciao
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com