Newsgroup: it.comp.lang.visual-basic
Titolo: Dimensione minima del form

Ciao a tutti,
ho realizzato un form con alcuni controlli al suo interno.
Vorrrei lasciare all'utente la possibilità di ridimensionare il form a 
piacimento ed ho infatti impostato la proprietà BorderStyle su "2-Sizable".
Tuttavia vorrei bloccare la dimensione minima del form in modo che i 
controllli presenti non vengano nascosti?
E' possibile senza codice, modificando solo le proprietà del form?
non avendo trovato risposta ho scritto il seguente codice nell'azione 
"Resize"....
Private Sub Form_Resize()
    Dim DimMinX As Integer
    Dim DimMinY As Integer
    DimMinX = 13425
    DimMinY = 10650
    If CertiSOFT.Width < DimMinX Then
        CertiSOFT.Width = DimMinX
    End If
    If CertiSOFT.Height < DimMinY Then
        CertiSOFT.Height = DimMinY
    End If
End Sub
Funziona! ma mi fa un effetto sfarfallio quando l'utente prova 
ridimensionare la finestra rimpicciolendola.
Voi come fate?
Grazie in anticipo. 


Molto tempo fa trovai questo codice su internet, credo di non averlo
mai provato. Posto tutto il testo.
Parametri
frmResized = form da gestire
lMinWidth = larghezza minima
lMinHeight = altezza minima
lMaxWidth = larghezza massima
lMaxHeight = altezza massima
Note Da usare nell'evento Form_Resize()
Public Sub BlockResize(frmResized As Form, _
  Optional lMinWidth As Long = 8000, Optional lMinHeight As Long =
6000, _
  Optional lMaxWidth As Long, Optional lMaxHeight As Long)
On Error Resume Next
  ' dimensioni minime
  If (frmResized.Width < lMinWidth) Then
    frmResized.Width = lMinWidth
    Exit Sub  ' altrimenti esegue 2 volte codice che segue!
  End If
  If (frmResized.Height < lMinHeight) Then
    frmResized.Height = lMinHeight
    Exit Sub
  End If
  ' dimensioni massime
  If (lMaxWidth > 0) Then
    If frmResized.Width > lMaxWidth Then
      frmResized.Width = lMaxWidth
      Exit Sub  ' altrimenti esegue 2 volte codice che segue!
    End If
  End If
  If (lMaxHeight > 0) Then
    If frmResized.Height > lMaxHeight Then
      frmResized.Height = lMaxHeight
      Exit Sub
    End If
  End If
  DoEvents
End Sub

In VB6 una soluzione senza passare dal codice si può solo sognare, te
prova il codice che ti ho postato.
Il DoEvents dovrebbe evitare lo sfarfallio. Credo.
Ciao!

 wrote:

Si è abbastanza normale...
La soluzione giusta quando si programma con VB6 per risolvere queste
cose è
il SubClassing.
La tecnica è conosciuta da chi ha una discreta dimestichezza, con quel
metodo intercetti il messaggio
WM_GETMINMAXINFO, leggi i dati presenti al Pointer in memoria e li
sostituisci con i tuoi LIMITATI
e li ricopi in memoria...!
Trovi un esempio molto didattico quì:
http://vbnet.mvps.org/code/subclass/minmaxinfo.htm
--
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 ha scritto nel messaggio 
news:1191675780.9...@r29g2000hsg.googlegroups.com...
In VB6 una soluzione senza passare dal codice si può solo sognare, te
prova il codice che ti ho postato.
Il DoEvents dovrebbe evitare lo sfarfallio. Credo.
Ho provato il codice, funziona... ma praticamente corrisponde a quello che 
ho fatto io solo che essendo una funzione pubblica può essere utilizzata per 
qualsiasi form senza dover copiare il codice su tutti i form...
Lo sfarfallio purtroppo rimane... :-(
Mi sembra strano non esista niente di meglio... :-( 


Dato che ci siamo, mi sai dire per caso dove trovare una lista dei
messaggi di Windows?
Ciao!

Dato che ci siamo, mi sai dire per caso dove trovare una lista dei
messaggi di Windows?
Ciao!
Domanda abbastanza strana.... non c'è un ELENCONE come pensi
e non c'è un metodo univoco per intercettare i messaggi, la cosa va
approfondita
studiando man mano la cosa.
Io usavo ed uso sempre volentieri MSDN....!



http://vbnet.mvps.org/code/subclass/minmaxinfo.htm
Perfetto!! grazie
funziona benissimo ed era proprio quello che cercavo...