Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di jury79
    Registrato dal
    Feb 2010
    Messaggi
    50

    Access MDE Risoluzione Video

    Ciao a tutti,
    sono un utilizzatore di Access2000.
    Vi espongo il mio quesito:

    Ho creato un file Access MDE collegandolo ad un MDB.
    Questo file di maschere è utilizzato da più PC collegati in rete.
    Ho un problema con la sua visualizzazzione;
    Questi PC hanno risoluzioni video diverse e quando visualizzo le maschere queste si ingrandiscono ed alcune celle e pulsanti finiscono fuori dalla portata della videata.
    Che codici devo inserire per fare un'autoscala della maschera?

    Spero di essere stato chiaro.

    Ho trovato qualcosa in rete:

    http://access.mvps.org/access/general/gen0002.htm

    ma è troppo complicato per me.

    Spero possiate aiutarmi.

    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Non è facile,


    Devi rilevare se il sistema è 32 o 64 bit
    codice:
    Environ("PROCESSOR_ARCHITECTURE")
    Poi hai 2 funzioni diverse ( per il 32 o 64 ) per rilevare la risoluzione video

    ___32 bit ( Ricevuta da Alex a cui va il merito )
    codice:
    Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
    
    Private Const CCDEVICENAME = 32
    Private Const CCFORMNAME = 32
    Private Const DM_PELSWIDTH = &H80000
    Private Const DM_PELSHEIGHT = &H100000
    Public Const DISP_CHANGE_SUCCESSFUL = 0
    Public Const DISP_CHANGE_RESTART = 1
    Public Const ENUM_CURRENT_SETTINGS = -1
    
    Private Type DevMode
    dmDeviceName As String * CCDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
    End Type
    
    
    
    Public Function GetRes() As String
        Dim DevM As DevMode
            
        DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
        DevM.dmSize = LenB(DevM)
        Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevM)
        GetRes = DevM.dmPelsWidth & "-" & DevM.dmPelsHeight
    
    End Function
    ___64 bit
    codice:
    Qui ci sto ancora lavorando

    Poi all'apertura della maschera puoi rimodellare automaticamente
    la posizione e dimensione dei controlli.


    Se riesco a mettere a posto anche il 64 ti aggiorno



    Saluti

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Mahh !!!

    Ho testato quel codice anche su un PC a 64 bit e sembra che funziona ???

    Strano me lo hanno venduto solo per 32 bit

    Comunque se è vero
    apri un nuovo modulo e ci metti dentro questo codice
    che alla funzione pubblica ___ GetRes() ___
    ti restituiscela risoluzione dello schermo
    codice:
    Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
    
    Private Const CCDEVICENAME = 32
    Private Const CCFORMNAME = 32
    Private Const DM_PELSWIDTH = &H80000
    Private Const DM_PELSHEIGHT = &H100000
    Public Const DISP_CHANGE_SUCCESSFUL = 0
    Public Const DISP_CHANGE_RESTART = 1
    Public Const ENUM_CURRENT_SETTINGS = -1
    
    Private Type DevMode
    dmDeviceName As String * CCDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
    End Type
    
    
    
    Public Function GetRes() As String
        Dim DevM As DevMode
            
        DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
        DevM.dmSize = LenB(DevM)
        Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevM)
        GetRes = DevM.dmPelsWidth & "-" & DevM.dmPelsHeight
    
    End Function

    Poi crei una nuova maschera con

    3 caselle di testo associate di nome:
    ___ TTcc
    ___ TTdd
    ___ TTaa
    1 casella di testo NON associata di nome
    ___ Ris
    Nella casella Ris ci metti questa formula
    ="Risoluzione schermo " & GetRes()

    Aggiungi questo codice all'evento caricamento della maschera
    codice:
    Private Sub Form_Load()
        If GetRes() = "1024-768" Then
        
            Me.Ris.BackColor = 65280  'Verde
            
            Me.TTcc.Left = 1300
            Me.TTcc.Width = 1300
            
            Me.TTdd.Left = 1300
            Me.TTdd.Width = 1300
        End If
        
        If GetRes() = "1280-720" Then
        
            Me.Ris.BackColor = 65535  'Giallo
            
            Me.TTcc.Left = 2500
            Me.TTcc.Width = 1500
            
            Me.TTdd.Left = 2500
            Me.TTdd.Width = 1500
        End If
    End Sub

    Vedrai che i controlli si riposizionano
    sullo schermo 1024 x 768 e 1280 x 720



    Poi sara lavoro tuo spostare i pulsanti e quant'altro



    Saluti

  4. #4
    Tutto molto interessante, se non fosse per il fatto che

    LE FUNZIONI SPECIFICHE DI ACCESS VANNO TRATTATE NELLA SEZIONE APPOSITA

    C'è scritto nel regolamento ... e poi queste vi sembrano funzionalità "normali" di un dbms? no, decisamente no
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.