Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 2 su 2

creazione dinamica controlli

  1. #1
    misonsan non è in linea Scolaretto
    Post
    191
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ho una form in un file .xls nella quale edito dei controlli creati facendo un loop su un recordset di un file .mdb.
    La creazione dei controlli avviene in maniera corretta a meno dei pulsanti optionbutton.

    In buona sintesi facendo questo loop creo un controllo di tipo label la cui proprietà caption è data dal contenuto di un record del loop, poi creo due pulsanti di tipo optionbutton uno con caption NO e uno con caption SI. Creo anche un controllo di tipo frame che dovrebbe raggruppare dentro i controlli di tipo optionbutton.
    Questo per poter gestire la situazione che se nel loop che eseguo sono presenti piu record, devo editare tante righe composte da

    Controllo.label controllo.opt1(NO) controllo.opt2(si)
    Controllo.label controllo.opt1(NO) controllo.opt2(si)
    Controllo.label controllo.opt1(NO) controllo.opt2(si)
    La selezione di si o no sulla prima riga deve essere indipendente dalla selezione si o no della seconda e così via.
    Pensavo di risolvere raggruppando i due optionbutton di una stessa riga dentro a un controllo frame.

    Il risultato che ho dal codice che allego è che i pulsanti NON SONO VISIBILI
    E' possibile risolvere il problema ?

    Grazie

    Moreno

    Mi spiace non poter inserire un screenshot perchè renderebbe migliore la presa visione del problema.
    Grazie



    Dim L As MSForms.Label
    Dim CB As MSForms.CheckBox
    Dim Opt1 As MSForms.OptionButton
    Dim Opt2 As MSForms.OptionButton
    Dim Opt3 As MSForms.OptionButton
    Dim Opt4 As MSForms.OptionButton
    Dim Frame As MSForms.Frame





    Private Function GeneraDomande()

    Dim strsql As String
    Dim rs1 As ADODB.Recordset
    Dim TestoDomanda As String

    Ind = 0
    altzRiga = 21
    topRiga = 150
    gapRiga = 3
    leftRiga = 10



    strsql = "SELECT FaseDomande.C_Fase, FaseDomande.C_Domanda " & _
    " FROM FaseDomande " & _
    " WHERE (((FaseDomande.C_Fase) = " & txt1k & "))"
    Set rs1 = oConn.Execute(strsql)
    Do Until rs1.EOF
    Ind = Ind + 1
    TestoDomanda = DomandaFaseSelezionata(rs1("C_Fase"), rs1("C_Domanda"))
    EditaDomanda (TestoDomanda)
    rs1.MoveNext
    Loop
    rs1.Close
    Set rs1 = Nothing

    End Function

    Private Function DomandaFaseSelezionata(CFase As Integer, CDomanda As Integer)

    Dim strsql As String
    Dim rs2 As ADODB.Recordset

    strsql = "SELECT FaseDomande.Prog, FaseDomande.C_Fase, FaseDomande.TestoDomanda " & _
    " FROM FaseDomande " & _
    " WHERE (((FaseDomande.Prog)=" & CDomanda & ") AND ((FaseDomande.C_Fase)=" & CFase & "))"
    Set rs2 = oConnDoc.Execute(strsql)
    If Not rs2.EOF Then
    DomandaFaseSelezionata = rs2("TestoDomanda")
    Else
    DomandaFaseSelezionata = "?"
    End If

    rs2.Close
    Set rs2 = Nothing

    End Function
    Private Function EditaDomanda(TestoDomanda As String)


    Set L = Me.Controls.Add("Forms.Label.1", "lbl_" & Ind)
    ' L.BackColor = vbWhite
    L.AutoSize = True 'False
    L.Caption = TestoDomanda 'L.Name
    L.Width = 200 'Len(TestoDomanda) '100
    L.Height = altzRiga
    L.Top = topRiga
    L.Left = 50 'leftRiga

    Set Frame = Me.Controls.Add("Forms.Frame.1", "Risposte", True)
    Frame.Height = 48
    Frame.Width = 155
    Frame.Top = topRiga - 20
    Frame.Left = 250
    Frame.ZOrder (0)
    Frame.Caption = "Risposte"

    Set Opt1 = Me.Controls.Add("forms.OptionButton.1", "No_" & Ind)
    Opt1.GroupName = Risposte
    Opt1.ForeColor = vbRed
    Opt1.AutoSize = True
    Opt1.Caption = "NO"
    Opt1.Value = False
    Opt1.Top = topRiga
    Opt1.Left = 350

    Set Opt2 = Me.Controls.Add("forms.OptionButton.1", "Si_" & Ind)
    Opt1.GroupName = Risposte
    Opt2.ForeColor = vbGreen
    Opt2.AutoSize = True
    Opt2.Caption = "SI"
    Opt2.Value = False
    Opt2.Top = topRiga
    Opt2.Left = 380



    topRiga = topRiga + altzRiga + gapRiga


    End Function

  2. #2
    Post
    1,608
    Blogs
    33
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quei controlli non sono visibili perchè, se li aggiungi alla Collection .Controls della UserForm, rimangono "dietro" al Frame.

    Anche il Frame è un Container, perciò tutto quello che andrà raggruppato nello stesso Frame, andrà logicamente aggiunto alla Collection .Controls del Frame stesso :

        Dim Opt1 As MSForms.OptionButton
        Dim Frame As MSForms.Frame
        
        '...
        
        Set Frame = Me.Controls.Add("Forms.Frame.1", "Risposte", True)
        Set Opt1 = Frame.Controls.Add("forms.OptionButton.1", "No_" & Ind)
    
        '...
    
    ℹ️ Leggi di più su MarcoGG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 10
    Ultimo Post: 14-01-2015, 21:00
  2. Creazione dinamica controlli
    Da perseo74 nel forum Visual Basic .Net
    Risposte: 4
    Ultimo Post: 08-09-2011, 17:34
  3. creazione controlli in maniera dinamica
    Da misonsan nel forum Microsoft Word
    Risposte: 5
    Ultimo Post: 27-02-2011, 16:13
  4. creazione dinamica di un form
    Da gismo nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 05-09-2008, 13:22
  5. [vb6] creazione dinamica array
    Da raf1971 nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 05-04-2008, 17:37