Newsgroup: it.comp.lang.visual-basic
Titolo: Form e HScrollbar in vb6

Ho la necessità di inserire in fase di runtime un numero imprecisato di 
controlli textbox e non riesco ad ottenere il form che contiene tali 
controlli con lo scrollbar verticale.
Non trovo nulla che risponde alle mie necessità .... qualche dritta ;-))
Grazie 

 Non trovo nulla che risponde alle mie necessità .... qualche dritta ;-))
La prima che mi viene in mente e': potresti riformulare la domanda?
-- 
ciao, hal

 ma questo che 'vvordi'?
Secondo me... s/form/controllo ;-)
In altre parole, cerca la proprietà .MultiLine della TextBox, ma non
lo sa e pensa che ci sia un controllo apposta. Se legge questo post
saprà che non è così, e si spera che vada a vedere cos'è e cosa fa
sull'Help.
Un Paperino ipotetico.

 Secondo me... s/form/controllo ;-)

Veramente mi sembra di aver capito un'altra cosa (da qui l'importanza di
spiegarsi).
Secondo me i controlli textbox che vuole assegnare alla form occupano e
superano in numero le dimensioni della form per cui voleva mettere una
form con scrollbar in modo da poter all'occorrenza visualizzare anche i
textbox nascosti
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 textbox nascosti
bingo.
ciao, j.

 anche i textbox nascosti
Uhm. Rileggendo, mi sa proprio che hai ragione tu.
Allora un hint anche per questo: mettere un controllo dentro il form,
che a sua volta funga da contenitore per le textbox, e venga fatto
scorrere da una Hscroll. Io userei un frame con .BorderStyle a 0.
Ma, ancora prima, ripenserei l'interfaccia. Nella mia esperienza,
se veramente c'è da fare tanto lavoro di input, si riesce quasi
sempre a ridisegnare la cosa in modo più "umano", e di solito
risulta anche più semplice, elegante e funzionale.
Bye, G.

 risulta anche piů semplice, elegante e funzionale.
Quindi, a seconda del tipo di informazioni da mostrare, direi
tab e/o griglia, se non addirittura piu' forms.
-- 
ciao, hal

 tab e/o griglia, se non addirittura piu' forms.
Esattamente. O rendendo alternativamente visibili e invisibili
alcune TextBox, magari per gruppi, o perfino riutilizzando le
stesse[1] o... boh.
Per una scelta ben precisa, ho anche disegnato un form con
14 CheckBox e 15 ListView con checkboxes, /ognuna/ di dodici
righe... per *quel* lavoro era necessario, ma ho odiato doverlo
fare :-/
Quale sia la strada migliore può saperlo solo l'OP, che sa di
che cosa si tratta :-).
[1] Auto-bleargh :-( come mi è potuta venire in mente una cosa
simile non lo so... sarà la fame :-)
Bye, G.

 scorrere da una Hscroll. Io userei un frame con .BorderStyle a 0.
Mi puoi spiegare meglio questo passaggio, scusa ma sono un poco tonto
ma ho voglia di imparare e non ho capito nulla.

 Devo fare proprio questo ma non so come procedere.
il metodo frequente e' mettere sul form una vscroll e uno o piu' picbox, in
cui vai a porre i controlli. quando si tocca la scroll, fai scorrere il
picbox.
il codice qui sotto e' di vari anni fa.
da una tabella caricavo coppie label-text (si cui non sapevo il numero) in
un picField, a sua volta contenuto in un picParent (che copre praticamente
tutto il form).
ora non ho davvero il tempo di riguardarlo, spero ti possa dare qualche
spunto. comunque, lanciato adesso, funziona ancora, e fa esattamente quello
che ti serve.
ciao, j.
option explicit
Dim j
Private Sub Form_Load()
    VSC.Height = picParent.ScaleHeight
    VSC.LargeChange = picParent.ScaleHeight
    Dim fld As Field
    For j = 1 To frmcMail.DB1.Recordset.Fields.Count - 1 'J=1 : 0 gia'
caricata
        Load lblFields(j)
            lblFields(j).Top = lblFields(j - 1).Top + 360
            lblFields(j).Visible = True
        Load txtFields(j)
            txtFields(j).Top = txtFields(j - 1).Top + 360
            txtFields(j).Visible = True
            picFields.Height = picButtons.Height + 360 + txtFields(j).Top
    Next
    For j = 0 To frmMail.DB1.Recordset.Fields.Count - 1
        lblFields(j) = frmMail.DB1.Recordset.Fields(j).Name & ": "
        txtFields(j) = IIf(IsNull(frmMail.DB1.Recordset.Fields(j)), "",
frmMail.DB1.Recordset.Fields(j))
    Next
    Left = frmMail.Left + ((frmMail.Width - Width) / 2)
    Top = frmMail.Top + ((frmMail.Height - Height) / 2)
'    Me.ZOrder
'    Me.Show
End Sub
Private Sub picFields_Resize()
    VSC.Max = IIf(picFields.Height > picParent.Height, picParent.Height -
picFields.Height, 0)
    VSC.Value = 0
End Sub
Private Sub VSC_Change()
    picFields.Top = VSC.Value
End Sub
Private Sub VSC_Scroll()
    picFields.Top = VSC.Value
End Sub

 ha scritto nel messaggio 
news:37sab7F...@individual.net...

la mia sub per creare i campi in fase di runtime è la seguente ( intNumCampi 
è la variabile inserita dall'utente)  :
For i = 1 To intNumCampi
   strtemp = "Label" & CStr(i)
   Fase3.Controls.Add "vb.Label", strtemp
        With Fase3.Controls(strtemp)
            .Visible = True
            .Width = 800
            .Height = 200
            .Top = 400 + intStepY
            .Left = 100
            .Caption = "Campo " & CStr(i)
            .Alignment = vbRightJustify
        End With
    strtemp1 = "Text" & CStr(i)
    Fase3.Controls.Add "vb.TextBox", strtemp1
        With Fase3.Controls(strtemp1)
            .Visible = True
            .Width = 2000
            .Height = 200
            .Top = 400 + intStepY
            .Left = Fase3.Controls("Label1").Left + 
Fase3.Controls("Label1").Width + intStepX
            .Alignment = vbLeftJustify
            .Tag = strtemp
        End With
        intStepY = intStepY + 350
Next
Come associo la scrollbar a questo codice
N.B. Scusate ma non riesco a capire ... come già detto ho la testa dura 

 poco tonto ma ho voglia di imparare e non ho capito nulla.
Beh, il codice postato da J. funziona sicuramente, conoscendolo...
Io che sono pigro :-), per scrivere meno codice uso un controllo
in più e sposto solo quello.
OK, mi spiego meglio, anche se farsi capire a parole è lunga;
con un esempio davanti capiresti in trenta secondi tutto quanto.
Partiamo da zero: un Form, come già sai, può contenere dei
controlli; forse non sai ancora che alcuni controlli possono essere
a loro volta dei contenitori.
Prova a seguire passo passo quest'esempio: apri un nuovo progetto,
ingrandisci un po' il form, mettici dentro un frame, poi, *tenendo
selezionato il frame*, disegna nel frame delle textbox... vedrai che
spostando il frame si spostano anche le textbox che contiene.
Chiaro fin qui ?
Ora, se affianchi una VScroll al frame, puoi semplicemente cambiare
la proprietà .Top del Frame, e sposti tutto il blocco frame+textboxes
con una sola linea di codice, per esempio:
Private Sub Form_Load()
' giusto per esempio, supponiamo che il frame sia un bel po' più
' alto del form, e facciamo così:
VScroll1.Max = (Frame1.Height - Form1.Height) \ 10
VScroll1.LargeChange = Frame1.Height \ 100
End Sub
Private Sub VScroll1_Change()
' qui spostiamo il frame all'interno del form in proporzione alla
' posizione della scrollbar
Frame1.Top = -10 * VScroll1.Value
End Sub
Se metti a zero la proprietà .BorderStyle del Frame, ottieni un
contenitore praticamente invisibile contro lo sfondo del form,
ma che funziona ugualmente.
Spero di essere stato più chiaro :-), altrimenti chiedi.
Bye, G.

 Chiaro fin qui ?
i controlli textbox li creo in runtime e non so come inserirli nel frame
da codice. 

Grazie a tutti per i consigli.
Ho risolto impostando il form contenente tutti i textbox in un Form MDI .
Imposto l'altezza del form superiore alla propietą TOP dell'ultima textbox 
creata in fase di runtime.
Automaticamente il Form MDI Genitore visualizza la scrollbar.
Grazie ancora.

 frame da codice.
Proprietą .Container. Per esempio,
Set Text1.Container = Frame1
Ma vedo che hai risolto.
Bye, G.


Ho cantato vittoria troppo presto la mia soluzione non funziona....
comunque ho scritto il codice come mi hai indicato tu
e va che è una meraviglia.
grazie davvero per le preziose informazioni.
;-) MrPhp