Newsgroup: it.comp.lang.visual-basic
Titolo: dimensione form a video

Quando una form di un software viene visualizzata su uno schermo con 
risoluzione molto alta risulta piccola.
E' normale oppure da codice del software si può intervenire per ingrandirla 
, cioè che in unità di pixel sia più lunga quando la risoluzione è alta .
E viceversa sia più corta ( meno pixel di lunghezza ) quando la risoluzione 
è bassa .
ciao 

gabriele ha scritto:

Nei  post del mese di agosto ne era passato uno o due con un link ad una 
classe, sul sito comune, che fa proprio questo. Cerca qualcosa come resize
-- 
Greg 

>
Bisogna implementare una routine che ridimensioni in automatico sia il
Form che tutti i controlli che ne fanno parte, includendo anche il
ridimensionamento dei caratteri utilizzati.


 ridimensionamento dei caratteri utilizzati.
La classe Resize sul sito comune lo fa, e con 3 righe si gestice anche la
dimensione dei font.
Io la sto modificando, mi sembra che funzioni ora come ora.
C'era anche un bug con le SSTab, ma ora mi funziona (anche se la soluzione
non è elegante).
Se mi dite dove, la posso postare, ovviamente ancora non è testata, anche
se le modifiche rispetto all'originale sono poche.
Routine ResizeControls:
|            If (InStr(ResizeFlags, "L")) Then .Left = (m_Controls(i).OriginalLeft * WidthChange)
|            If (InStr(ResizeFlags, "T")) Then .Top = (m_Controls(i).OriginalTop * HeightChange)
|'            If (InStr(ResizeFlags, "W,H")) Then
|'              .Font.Size = m_Controls(i).OriginalFontSize * (m_Controls(i).OriginalWidth * WidthChange) / m_Controls(i).OriginalWidth
|'              If .Font.Size > m_MaxFontSize Then  ' And m_Controls(i).OriginalFontSize < 12
|'               .Font.Size = m_MaxFontSize
|'              End If
|'            End If
|            If (InStr(ResizeFlags, "W")) Then .Width = (m_Controls(i).OriginalWidth * WidthChange)
|            If (InStr(ResizeFlags, "H")) Then .Height = (m_Controls(i).OriginalHeight * HeightChange)
| 
|' Public Property Let MaxFontSize(ByVal fMaxFontSize As Single)
|' 
|'   m_MaxFontSize = fMaxFontSize
|' 
|' End Property
Routine SaveIntialStates:
|       Else
|         'Add a reference to the control's position into the array containing all control
|         'information.
|         On Error Resume Next
|           m_Controls(i).OriginalLeft = .Left
|'           If .Left < 0 Then m_Controls(i).OriginalLeft = .Left + 75000    'Gestione SSTab
|           m_Controls(i).OriginalTop = .Top
|           m_Controls(i).OriginalWidth = .Width
|           m_Controls(i).OriginalHeight = .Height
|'           m_Controls(i).OriginalFontSize = .Font.Size
|         On Error GoTo 0
| Private Sub Class_Initialize()
|   Set m_SourceForm = Nothing
|   m_IsFirstResize = True
| 
|   m_FormWidth = 0
|   m_FormHeight = 0
|   
|'   m_MaxFontSize = 11.5
| End Sub
E dichiarazioni:
| Private Type ControlPosition
|   Control As Control                                 'Reference to the control instance.
|   OriginalLeft As Long                               'Original Left position of the Control.
|   OriginalTop As Long                                'Original Top position of the Control.
|   OriginalWidth As Long                              'Original Width of the Control.
|   OriginalHeight As Long                             'Original Height of the Control.
|'   OriginalFontSize As Single                           'Dimensione Font iniziale
| End Type
| Private m_SourceForm As Form                         'The form to be resized.
| Private m_FormWidth As Long                          'Original form width.
| Private m_FormHeight As Long                         'Original form height.
| Private m_Controls() As ControlPosition              'Array for storing control information.
| Private m_IsFirstResize As Boolean                   'Flag indicating first resize.
|' Private m_MaxFontSize As Single                     'Dimensione Max Carattere
I Rem ' sono le aggiunte alla classe. C'è da dire che io l'ho provata "ad
ingrandire" la risoluzione, da 800 fino a 1280. Avevo notato che i font se
li ingrandisco in proporzione, venivano troppo grandi, quindi ho aggiunto
la proprietà MaxFontSize.
Spero di non aver tralasciato nulla.

 ridimensionamento dei caratteri utilizzati.
Se fosse 
vb.net
 basta impostare la proprietą Anchor o Dock dei controlli :)
Difficile!
Ciao