Newsgroup: it.comp.lang.visual-basic
Titolo: VB6 Usercontrol

Ciao a tutti,
� possibile in VB6 creare uno usercontrol che l'utilizzatore trascina sulla
form e deve essere tipo la commondialog (invisibile, piccolo ecc.)
Poi da codice se mi fa Usercontrol.Start all'interno del metodo vorrei
trovare il modo di:
1) Posizionare lo usercontrol al centro verticalmente, e allargarlo
orizzontalmetne
2) Renderlo visibile nel suo stile grafico
3) Posizionarlo davanti a tutti i controlli
4) Impostare propriet� della form
Nelle mie brevi prove sono riuscito a settare la 4), ma gli altri punti non
molto bene.
In pratica vorrei creare una sorta di picturebox "Elaborazione in corso"
che si auto centra e auto visualizza quando l'abilito.
Da client voglio dover trascinare il controllo in qualsiasi parte, e
scrivere Controllo.Start e Controllo.Stop e via.
PS: ho gi� una form separata che fa tutto ci�, ma voglio integrare qualcosa
nelle forms.
Grazie

 3) Posizionarlo davanti a tutti i controlli
Non sono sicuro ma credo di si (in primo piano)
Ciao, Sauro 

 Si
Mi sai dire come posso da usercontrol in un metodo fare una cosa del genere
UserControl.Left=0
UserControl.Width=UserControl.Parent.Width
UserControl.Visible=True
UserControl.Top= UserControl.Parent.Height \ 2
Alcune propriet� non sono visibili da usercontrol, tra cui Left, Visible,
Left, per questo mi ero fermato.

 Left, per questo mi ero fermato.
Le propriet� che citi non devono essere dello
UserControl ma nel controllo che inserisci poi
in un form.
Saluti.
Sauro 

 Sauro
Scusa, me lo riguardo con calma in settimana prox e poi ti faccio sapere.
Grazie.

 in un form.
Non so se ho interpretato bene.
A me interessa gestire quelle propriet� non dalla form utilizzatrice, ma
direttamente dalla user control.
Ora con una classe a cui passo la form in un metodo Init potrei far tutto,
ma speravo di avere controllo direttamente nel codice dello usercontrol.
In modo che lo trascino nella form e poi dal codice faccio
UserControl1.Attiva
Call Elaborazione()
UserControl1.Disattiva
E da client non dover fare null'altro.

 UserControl1.Disattiva
Questo lo puoi fare.
Quello che devi per forza fare nel form che
lo contiene sono le seguenti proprieta:
left
top
enabled
visible
ecc.
Saluti.
Sauro 

 ecc.
Ho trovato il modo di farlo da usercontrol, lo sto provando:
' Forzare dimensione in desing time
Private Sub UserControl_Resize()
    If Not UserControl.Ambient.UserMode Then
        ' modalit� debug, forzo dimensione
        If UserControl.Height <> 750 Then
            UserControl.Height = 750
        End If
        If UserControl.Width <> 500 Then
            UserControl.Width = 500
        End If
    End If
End Sub
' Usare propriet� della form
UserControl.Parent.Enabled
' Usare propriet� del contenitore (form, frame, picture ecc.)
' (leggo l'altezza dello usercontrol in fase di esecuzione)
ContainerHeight = UserControl.Extender.Container.Height
L'oggetto extender � l'usercontrol stesso "inizializzato". In pratica �
l'istanza dello usercontrol.
Con questo faccio che in modalit� progetto inserisco solo un quadratino, in
modalit� esecuzione quando lancio la Sub StartProgress questo mi si centra
in mezzo alla form/frame ecc., va in primo piano e si attiva.
Quando lo stoppo ritorna invisibile.
Devo solo farlo partire invisibile, trovare l'evento giusto :)

 Devo solo farlo partire invisibile, trovare l'evento giusto :)
Dentro l'if del resize ho aggiunto:
UserControl.Extender.Visible = False
Cos� quando lo disegno sulla form va in visible=False subito.
Certo se lo volessi visible=true devo impostarlo a mano, ed ogni tentativo
di resize a design la reimposta a false.
Ma questo controllo non ha senso di essere visualizzato di default.
Sicuramente ci sar� qualcosa di pi� preciso...