IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Access
  New Posts New Posts RSS Feed - Ridimensionare maschere per la risoluzione dello schermo
  FAQ FAQ  Forum Search   Events   Register Register  Login Login


REGISTRATEVI su IALWeb forum!

Ridimensionare maschere per la risoluzione dello schermo

 Post Reply Post Reply
Author
Message
andreacaffy View Drop Down
Utente Senior
Utente Senior


Joined: 22/Apr/2009
Location: Italy
Status: Offline
Points: 420
Post Options Post Options   Thanks (0) Thanks(0)   Quote andreacaffy Quote  Post ReplyReply Direct Link To This Post Topic: Ridimensionare maschere per la risoluzione dello schermo
    Posted: 19/Ott/2011 at 15:36
Ho trovato codice molto interessante che vorrei adattare
ad access 2010, ma c'è qualcosa che non funziona.

Mi aiutate?

Il codice, da inserire in un modulo, è il seguente:

http://bytes.com/topic/access/answers/211349-any-good-
form-resizing-code

Esso, in ogni maschera, da quello che ho capito, va
richiamato così:


Private Sub Form_Resize()

call glrResizeForm(Me, True, rctOriginal)

end sub

Private Sub Form_Open (cancel as integer)

Call glrScaleForm(Me, 640, 480, rctOriginal)

end sub



Mi dà errore su rctOriginal... come faccio a
valorizzarlo? o cosa manca?

Grazie intanto dell'aiuto
Back to Top
Sponsored Links


Back to Top
willy55 View Drop Down
Moderatore
Moderatore
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 10334
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 19/Ott/2011 at 18:49

Non entro in dettaglio sul codice, ma hai posto (in testa al tuo programma) il codice seguente ?


Option Compare Database 'Use database order for string comparisons
Option Explicit
' From Microsoft Access 95 Developer's Handbook
' by Litwin, Getz, Gilbert, and RedDi*k (Sybex)
' Copyright 1995. All rights reserved.
' Store rectangle coordinates.
Type glrTypeRect
X1 As Long
Y1 As Long
X2 As Long
Y2 As Long
End Type


La dichiarativa Type fa riferimento a glrTypeRect (di 4 Long) che corrispondono all'oggetto rctOriginal da te impiegato.

Bye

Willy
Back to Top
andreacaffy View Drop Down
Utente Senior
Utente Senior


Joined: 22/Apr/2009
Location: Italy
Status: Offline
Points: 420
Post Options Post Options   Thanks (0) Thanks(0)   Quote andreacaffy Quote  Post ReplyReply Direct Link To This Post Posted: 20/Ott/2011 at 08:52
sì, l'ho messo. Ma quindi cosa devo fare?

Nel richiamo della function devo lasciare rctoriginal o
mettere qualche valore?
Back to Top
willy55 View Drop Down
Moderatore
Moderatore
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 10334
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 20/Ott/2011 at 10:04

Nella funzione da te indicata la DIM che configura l'oggetto è erroneamente commentata. Devi porre:


' Keep track of the previous/original size for the form.
Dim rctOriginal As glrTypeRect

Ti allego il db di esempio:

2011-10-20_100224_RdimensionamentoForm.rar

Non entro in dettaglio sul ridimensionamento della fimestra, ho solo reso operativo il codice da te indicato.

Bye

Willy
Back to Top
andreacaffy View Drop Down
Utente Senior
Utente Senior


Joined: 22/Apr/2009
Location: Italy
Status: Offline
Points: 420
Post Options Post Options   Thanks (0) Thanks(0)   Quote andreacaffy Quote  Post ReplyReply Direct Link To This Post Posted: 20/Ott/2011 at 10:22
Grazie. Ma perchè hai incluso una parte del codice nella
maschera e non tutto nel modulo?

Altra domanda willy. il mio db l'ho costruito in un pc con
una risoluzione 1920x1080. Devo adattarlo a 1040x768.
Quindi come devo richiamare le function?

E la funzione glrresizeform su open?

grazie - Andrea
Back to Top
willy55 View Drop Down
Moderatore
Moderatore
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 10334
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 20/Ott/2011 at 16:17

In risposta alla tua ...
ho separato le due parti di codice in quanto comparivano due istruzioni


Option Compare Database

Dal momento che non può esistere nello stesso modulo la medesima dichiarativa,
ho effettuato delle supposizioni fra chi ha sviluppato il programma e chi lo ha allegato sul Web (che, secondo me, li ha posti di seguito uno all'altro, senza indicarlo).
Inoltre la dichiarativa:

Public

nel primo faceva protendere per un modulo (e quindi di impiego pubblico), in quando inserito in una maschera avrebbe poca logica, per un programmatore esperto come ritengo siano le persone che hanno scritto il codice.
Questo per dirti il procedimento da me seguito.

Per quanto mi chiedi sulla risoluzione leggo nel codice:


' These constants should not require changing.
' 1280x1024, 1024x768 use 12 and 12.
' 640x480 and 800x600 use 15 and 15.

Ma come ti ho indicato nel post precedente, non sono entrato minimamente nel codice, per cui dovrai studiarti il codice (da te scelto) fare delle prove e adattarlo alle tue esigenze.

Buon lavoro

Willy
Back to Top
andreacaffy View Drop Down
Utente Senior
Utente Senior


Joined: 22/Apr/2009
Location: Italy
Status: Offline
Points: 420
Post Options Post Options   Thanks (0) Thanks(0)   Quote andreacaffy Quote  Post ReplyReply Direct Link To This Post Posted: 20/Ott/2011 at 16:47
Altre soluzioni al problema?
Back to Top
willy55 View Drop Down
Moderatore
Moderatore
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 10334
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 20/Ott/2011 at 22:59

Dico subito che il problema di effettuare la resize della form in base alla risoluzione dello schermo
non è di semplice soluzione. Ma visto che lo chiedi cerco di darti delle indicazioni.

Dovresti calcolare un rapporto di scala legato ad ogni risoluzione da te impiegata sia per
l'altezza (Y) che per la larghezza (X) con i punti della form e degli oggetti ivi contenuti.
Così, per ogni controllo, etichetta ecc. dovrai valutare il dimensionamento (width, height, size)
e relativo posizionamento (top, left) nell'ambito dell'oggetto nel form.

Un semplice esempio è il seguente:
For Each ctr In Maschera.Controls
 ctr.Width = ctr.Width / RapportoX
 ctr.Height = ctr.Height / RapportoY
 ctr.Font.Size = ctr.Font.Size / RapportoX
 ctr.Top = ctr.Top / RapportoY
 ctr.Left = ctr.Left / RapportoX
Next

Tieni presente che oltre a (Largezza, Altezza,  Da margine superiore, Sinistra) che possono avere valori decimali, la size di un font è un valore intero e quindi il rapporto potrebbe comportare raggruppamenti non omogenei.
Inoltre alcuni elementi (stile e spessore bordi) potrebbero non offrire una visibilità adeguata.
Access non offre un riduzione di scala dinamico, altri sistemi permettono sui font due tipi "crenatura":
 la "dimensionale", che rispetta tutti i dati metrici impostati nella digitalizzazione del font;
 e "ottica" che utilizzando degli algoritmi tende a compensare otticamente la metrica assente, incompleta o errata di diversi font.
Per cui come dicevo all'inizio la soluzione è molto personale e specifica delle esigenze

Se può esserti di aiuto ti allego dei link con varie soluzioni
http://www.access-programmers.co.uk/forums/printthread.php?t =43919
http://support.microsoft.com/kb/138901/it
http://63.236.73.220/showthread.php?t=360099
http://www.utteraccess.com/forum/resize-form-fit-screen-t157 9613.html
http://www.databasejournal.com/features/msaccess/article.php /3689226/Auto-Resize-Access-Subforms.htm

Bye

Willy
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,078 seconds.