Newsgroup: it.comp.lang.visual-basic
Titolo: Size di una form

Ciao a tutti, sto impazzendo cercando di dimensionare adeguatamente una form
che creo a runtime, ma non c'è verso..
nel progetto ho creato una form 'frmImage' (MDIChild) con dentro dei
controlli. A runtime voglio aprire un'istanza di questa form:
Public sub OpenNewFrmImage()
Dim frmHost as frmImage
'a questo punto so che la form deve essere 800x600 e allora faccio
with frmhost
 .height=600
 .width=800
end with
ma niente, fa quello che vuole, nel senso che è un po' più piccola.
funziona solo se nell'evento resize impongo le proprietà, ma mi impedisce di
ridimensionare la form ovviamente. Dove sbaglio? Ho provato anche con
.Move( ..) e con le proprietà scalewidth e scaleheight ma niente...
Grazie, Giuseppe

 Dim frmHost as frmImage
Dim frmHost as New frmImage


Ciao!
Le proprieta' Height e Width credo siano espresse in twips e non in pixel.
Prova cosi'.
With frmHost
    .Height = 600 * Screen.TwipsPerPixelY
    .Width = 800 * Screen.TwipsPerPixelX
End With
Ho compreso bene la tua necessita'?
    Alex

 controlli. A runtime voglio aprire un'istanza di questa form:
Mdichild...
...la parolina magica...
Se quello che vuoi fare č semplicemente assegnare al mdichild dimensionabile
la dimensione che vuoi tu, non vedo il problema.
Se invece vuoi che tenga al load la dimensione di design la risposta cambia:
non puoi.
Windows gestisce "in automatico" il size dei mdichild ridimensionabili.
l'unica soluzione (almeno, l'unica trovata dal sottoscritto con un bel po'
di
chiacchierate con Roberto Piazzolla) č:
1) mdichild a dimensione fissa.
2) in un modulo bas:
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"
(          ByVal hwnd As Long, _
           ByVal nIndex As Long, _
           ByVal dwNewLong As Long) As Long
Public Const GWL_STYLE = (-16)
3) al termine della load del form:
SetWindowLong me.hwnd, GWL_STYLE, &H56CF0000
ciao
ugo

 Windows gestisce "in automatico" il size dei mdichild ridimensionabili.
Solo se l'MDI ha quella proprietà (che mi pare si chiami AutoShowChild) a
true.
Ciao
-- 
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 true.
Mi hai messo un dubbio atroce ma ho verificato:
windows continua ad auto-gestirsi la dimensione del child anche con la
autoshow a false...  la AutoShowChildren decide solo se far eseguire
in automatico la .Show del Child.
Se hai altre notizie dì pure, tuttavia: la vexata quaestio dura da tanto...
ciao
ugo

 in automatico la .Show del Child.
Bah, so solo che quelle poche volte che ho usato MDI con quella proprietà
riuscivo a mostrare la finestra quando e come volevo io.
Pensa che addirittura imposto le dimensioni nella _ReadProperty di un
usercontrol appiccicato sopra la finestra da dimensionare...


 usercontrol appiccicato sopra la finestra da dimensionare...
cosě perň di fatto fai quello che si diceva prima:
reimposti tu le dimensioni del form.
Quello che invece, imho, non puoi fare č fare in modo che il form
child _sizable_ mantenga alla show la dimensione preimpostata a
design-time.
correggimi se sbaglio (spero, dato che il giochetto con la setwindowlong
ha le sue brave controindicazioni...)
ciao
ugo

 design-time.
Fammi capire... perchč un form _sizeable_ dovrebbe avere delle dimensioni
fisse?


 fisse?
non ho detto che debba avere dimensioni fisse.
semplicemente vorrei che avesse inizialmente le dimensioni definite a
design-time, invece di quelle predefinite da windows.
...e (da pigrone) non ho volgia di modificare io le dimensioni del
form dopo la show...
ciao
ugo

 form dopo la show...
Anche perchè è un bell'errore logico e porterebbe a uno sfarfallio
fastidioso.
