Newsgroup: it.comp.appl.access
Titolo: [OT] Forzare una risoluzione dello schermo

Davide Costanzo mi scrive in privato per avere un consiglio su come forzare 
una risoluzione dello schermo.
Pensando all'utilità comune così gli ho risposto.
Questa la sua domanda:
"Ciao,
ho visto il tuo programmino in access per cambiare la risoluzione dello 
schermo...
scusa l'ignoranza ma non ci capisco nulla... io vorrei solamente che 
premendo un pulsante verifichi se la risoluzione è diversa da x,y e se 
diversa la porti a x,y
Tra tutto il codice che hai scritto, cos'è che devo togliere e cosa posso 
tenere?
grazie
davide"
Ciao Davide
premesso che queste problematiche vanno postate sul NG, da dove originano, 
provo a darti una soluzione anche in considerazione del fatto che è domenica 
e sono un po' più libero.
Sul NG inserirò la dua domanda affinchè sia di utilità comune.
In un modulo pubblico, anche nel modulo MScreen, aggiungi la seguente 
dichiarazione:
Public Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As 
Long
Nello stesso modulo aggiungi queste funzioni:
Public Function DimmiRis() As String
Dim lDC As Long
    Dim lHoriz As Long
    Dim lVert As Long
    Dim lBitpPixel As Long
    lDC = GetWindowDC(GetDesktopWindow())
    lHoriz = GetDeviceCaps(lDC, HORZRES)
    lVert = GetDeviceCaps(lDC, VERTRES)
    lBitpPixel = GetDeviceCaps(lDC, BITSPIXEL)
   GetCurrentRes.lHoriz = lHoriz
   GetCurrentRes.lVert = lVert
   GetCurrentRes.lBitPerPixel = lBitpPixel
  DimmiRis = lHoriz & "X" & lVert & " " & lBitpPixel & " bit"
End Function
Public Sub ImpostaMiaRisoluzione()
Dim MiaRes As TRes
With MiaRes
.lHoriz = 1280
.lVert = 1024
.lBitPerPixel = 32
End With
Call ChangeCurrentRes(MiaRes)
End Sub
Public Sub ImpostaMiaRisoluzionePro(H As Long, V As Long, Px As Long)
Dim MiaRes As TRes
With MiaRes
.lHoriz = H
.lVert = V
.lBitPerPixel = Px
End With
Call ChangeCurrentRes(MiaRes)
End Sub
'-----Fine Codice ---------------------------------------------------------
A questo punto puoi procedere in due modi:
Per esempio su apertura di una maschera di avvio e presupponendo che 
desideri una risoluzione di 1280X1024 32 bit:
If DimmiRis = "1280X1024 32 bit" then
exit sub
else
ImpostaMiaRisoluzionePro(1280,1024,32)
End if
Oppure puoi usare la sub già preimpostata:
ImpostaMiaRisoluzione
In questa sub dovrai impostare la risoluzione che vuoi.
ImpostaMiaRisoluzionePro è più professionale perchè accetta direttamente la 
struttura della risoluzione tra i parametri.
Ti ricordo che quando scrivi "If DimmiRis = "1280X1024 32 bit" then" dovrai 
rispettare perfettamente gli spazi.
Così se scrivessi If DimmiRis = "1280X1024 32bit" then
non funzionerebbe perchè hai eliminato lo spazio tra 32 e bit.
Inoltre potrai impostare solo una combinazione tra quelle supportate dalla 
tua scheda video o dalla scheda video del cliente.
Fammi sapere.
Ciao, Carlo 

Ciao Carlo,
ho una domanda ingenua: non è meglio ridimensionare le maschere a seconda 
dello schermo presente?
Ciao.
eSQueL 

Carlo Costarella ha scritto:

Ciao Carlo.
Non manca un pezzetto....?
    Call ChangeCurrentRes(MiaRes)
Se non mi è scappata non viene definita, immagino ti possa essere
sfuggita nel Copy...
Ciao
@Alex

 ha scritto nel messaggio
news:45602c4f$0$7637$4faf...@reader1.news.tin.it...

Da esperienza personale no, dato che la formattazione
che fai durante lo sviluppo nel bene e nel male è riferita
alla risoluzione video che utilizzi in fase di sviluppo ed anche alla
grandezza
del monitor che usi anche se ultimamente vedo molti 17'' che via via stanno
sostituendo i 15''..
C'è da dire che il cambiamento della risoluzione video non
sempre è ben accettato dall'utente (sarà sfiga ma i miei utonti
so tutti cechi).
Morgan

 ha scritto nel messaggio 
news:1163930732.0...@h54g2000cwb.googlegroups.com...
cut
Ciao Carlo.
Non manca un pezzetto....?
    Call ChangeCurrentRes(MiaRes)
Se non mi č scappata non viene definita, immagino ti possa essere
sfuggita nel Copy...
Ciao
@Alex
Non manca perchč ImpostaMiaRisoluzionePro e ImpostaMiaRisoluzione la 
richiamano.
Ciao, Carlo 

 ha scritto nel messaggio 
news:45602c4f$0$7637$4faf...@reader1.news.tin.it...

Questo è un'altro punto.
Non è quello che cerca Davide, almeno non mi è sembrato chiedesse questo.
Ciao, Carlo 

 ha scritto nel messaggio 
news:45603394$0$19233$4faf...@reader4.news.tin.it...

Non so, io uso una classe (fonte: Access 2000 manuale di programmazione - 
Getz, Litwin & Gilbert) che funziona splendidamente. Ridimensiona maschere e 
relativi controlli e l'utente non s'accorge di nulla sia che abbia un 
800x600, sia un 1280x1024.
eSQueL

 eSQueL
Ciao eSQeL
ti sarebbe di troppo disturbo pubblicare la classe ? e' interessante
come metodo.
Gira anche su A2003?
Saluti
Diego

 ha scritto nel messaggio
news:1163936910....@h54g2000cwb.googlegroups.com...

Sě, anche 03. Non credo ci siano problemi a pubblicarla, visto che č sul cd
del libro. In ogni caso, farň cosě: la mando oggi stesso al sitocomune.
Decideranno loro se č pubblicabile senza problemi :)
Ciao.
eSQueL

 eSQueL
Grazie eSQueL
Saluti
Diego

 ha scritto nel messaggio 
news:1163936910....@h54g2000cwb.googlegroups.com...

Eh ... mi stavo mettendo al lavoro e in seconda pagina ho trovato "nessuna 
parte di  questo libro puņ essere riprodotta, memorizzata in sistemi 
d'archivio o trasmessa in  qualsiasi forma o mezzo elettronico, meccanico 
... senza la preventiva autorizzazione scritta dell'editore".
Mi spiace, ma sembra che non si possa proprio fare.
Se trovo il tempo riscrivo la classe e la pubblico, ma mi devi dare un po' 
di tempo.
Ciao.
eSQueL

------------------------------------------------------
Bene.... la funzione ImpostaMiaRisoluzionePro(...) all'interno richiama
Call ChangeCurrentRes(MiaRes) che non trovo....!
Dove sbaglio visto che facendo il Copy/Paste mi dice che non la
trova....?
@Alex

 eSQueL
Volevo dirtelo ma ti sei accorto da solo....
Io ho lo stesso libro con la stessa soluzione e personalmente se devi
riscriverla solo per
togliere quelle cose che la rendono riconoscibile direi che è lavoro
inutile...
Il tutto è già pubblico da MVPS scaricabile con un MDE da istanziare
nel tuo MDB quindi
direi che è fruibile, per il codice inserito non è un problema visto
che funziona come una DLL.
Per la questione della risoluzione invece io sono contrario a fare
questi pasticci, ma l'OP chiedeva solo di forzare la risoluzione,
quindi quanto detto da Carlo più puntuale..!
@Alex

 ha scritto nel messaggio 
news:1163947438.1...@m73g2000cwd.googlegroups.com...
eSQueL ha scritto:




@Alex
In tal caso, meglio così. Lavorare intutilmente non è per niente 
entusiasmante :)
Ciao
eSQueL 

 Il tutto è già pubblico da MVPS scaricabile con un MDE da istanziare
scusate cos'è MVPS e dove si scarica? eventualmente potrei avere
titolo ed autore del libri che lo vorrei acquistare?
Grazie
Saluti
Diego

 ha scritto nel messaggio
news:1163968523.2...@k70g2000cwa.googlegroups.com...
Alessandro Baraldi ha scritto:


Grazie
Saluti
Diego
_____________________
"Access 2000 manuale di programmazione" - Getz, Litwin & Gilbert - Jackson
Libri (può essere che adesso trovi la versione per 2003 ... e controlla
l'editore che non è sicuro sia sempre lo stesso).
MVPS credo stia per Most Value Professional. Traggo da Microsoft:
"Gli MVP (Most Valuable Professional) Microsoft sono persone riconosciute,
credibili e disponibili, esperte di uno o più prodotti Microsoft® che
partecipano attivamente alle comunità in linea e non in linea per
condividere la loro esperienza e le conoscenze acquisite con altri clienti
Microsoft ... Il Programma MVP è il modo con cui Microsoft riconosce
ufficialmente i risultati raggiunti da queste persone e il loro contributo
alla comunità."
In tal caso (e se non ho preso un grachio), il sito dovrebbe essere questo:
http://www.mvps.org/
Ciao.
eSQueL

 eSQueL
Arigrazie eSQueL
Saluti
Diego

 eSQueL
Ciao eSQueL, scusami se ti disturbo ulteriolmente, volevo solo dirti
questo, ho cercato il libro che tu mi hai gentilmente segnalato,
attravaerso fonti diciamo "Librarie", un amico lavora nella libreria
forse piu' fornita di Palermo, il problema e' che non esiste piu' la
Jackson libri perche' fallita, ed anche che il volume essendo di piu'
di 5 anni fa è stato ritirato dal catalogo e quindi anche se esistesse
ancora la jackson libri...lo stesso comunque non sarebbe piu'
reperibile.
Ora il mio problema sorge nel momento in cui mi abbisogna un metodo per
far si che in un'applicazione creata con un pc  portatile con una
risoluzione di 1280X1024, i controlli e le maschere non appena vengono
visualizzate su un monitor che ha risoluzione 800X600 o 1024X768,
naturalmente risulatano sfasati e dovrei ridimensionarli a mano, da
quello che ho capito il modulo da te nominato dovrebbe far si che
questo problema sia risolto in quanto qualunque sia la risoluzione
impostata i controlli e le maschere si ridimensionano automaticamente,
basterebbe insomma richiamare il modulo di classe attraverso una macro
autoexec dico bene?
Ora come cavolo faccio a reperire il codice in questione?, ho una serie
di libri sulla programmazione di access anche piuttosto avanzati, tra
cui "Access 2000 ed Oltre" dell'Apogeo, Autori: Forte,Howe Realston ed
anche Programmare Access 2003 della Microsoft Mondadori Informatica,
Autore Rick Dobson, questi sono proprio di programmazione avanzata, gli
altri sono poco piu' di Dummies, ma in nessuno sfogliandoli in maniera
certosina esiste qualcosa del genere di cui tu hai parlato, come posso
fare?? E' chiederti molto o chiederti qualcosa di illegale mandarmi la
classe magari per email? si puo' fare?...non vorrei stessi chiedendo
qualcosa per cui sia io o tu dovessimo contravvenire alle regole nel NG
se e' fattibile ti pregherei di aiutarmi in questo, se cio' non fosse
possibile invece capirei e chiedo fin da adesso scusa al NG se ho fatto
qualcosa che non andava fatto.
Grazie comunque in ogni caso.
Saluti
Diego

Forse ho Parlato troppo presto...ho fatto una ricerca nei vari thread
che trattavano il tema del ridimensionamento, e ho visitato sitocomune
cosi' come suggerito da Roberto in alcuni post, ho visionato gli esempi
sia del cambio risoluzione video che del ridimensionamento automatico
leggendo anche che la routine del cambio risoluzione che va bene per
A97 probabilmente potrebbe dare problemi per A00 e successive versioni
nonche' per chi ha un sistema operativo successivo al 98, nota di
Alessandro Baraldi, quindi sono andato a vedere la funzione di Alex che
si appoggia alle Api, ora vorrei capire una cosa se fosse possibile,
qual'e' la sequenza giusta per far funzionare la cosa? devo
all'apertura del db far partire il modulo per il cambio risoluzione ed
all'apertura delle maschere far partire sull'evento form Open la
routine per il ridimensionamento (o richiamare il modulo) Giusto??
ma alla chiusura del db come faccio a far ritornare la risoluzione
quella di prima??
Saluti
Diego

 ha scritto nel messaggio
news:1164042709.3...@b28g2000cwb.googlegroups.com...

Ti posso dire come funziona la soluzione che ho tratto dal libro. Ci sono
tre moduli di classe: FormResize (classe base), ControlResize e
SectionResize (classi d'appoggio). FormResize viene istanziata nei moduli di
ogni form nel modo solito (Set FrmRes = New FormResize) e sull'evento
Open_Form. A seguito di questo, le Forms sono ridimensioante a run-time e in
base alla risoluzione dello schermo presente. Perciň non hai bisogno di
lavorare sulla risoluzione che resta quella che č.
La procedura č un tantino complessa perché non basta lavorare sui pixel
dimunuendoli o aumentadoli in proporzione alla risoluzione presente. Questo
perché il numero di twips per pixel non č costante, ma cambia a seconda
della risoluzione adottata. Cosě, tramite le Api, si prelevano entrambe le
grandezze (pixel e twips) e, conosciuta la risoluzione del tuo schermo, si
ridimensionano le Forms e i relativi controlli.
Fammi sapere.
Ciao :)
eSQueL

 eSQueL
Miiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.....non ne saro' mai capace
non so nemmeno da dove iniziare!!
comunque grazie lo steso per la tua disponibilità eSQueL
Saluti
Diego

 eSQueL
ma con il modulo di Alex baraldi s riesce a stabilire la risoluzione
corrente del monitor e passarla al modulo che ridimensiona le form e i
controlli?o il modulo in questione forza solo la risoluzione?

 eSQueL
ma con il modulo di Alex baraldi s riesce a stabilire la risoluzione
corrente del monitor e passarla al modulo che ridimensiona le form e i
controlli?o il modulo in questione forza solo la risoluzione?
______
Eh...non lo so, non lo conosco.