Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173

    [vb6] creare controllo optionbutton

    Ciao a tutti!
    Ho scaricato da internet il codice sorgente per la creazione di un controllo utente, un option button stile xp.
    Il problema è che se ho 2 frame con dentro degli option button, questi 2 frame non sono indipendenti ma se clicco su l'option di uno vengono de-checkati quelli dell'altro.
    L'errore è nell'evento click del mio controllo, posto il codice:

    Private Sub UserControl_Click()
    Dim rd As Object

    For Each rd In UserControl.Parent
    If TypeOf rd Is MyOptionbutton Then

    rd.Value = False
    End If
    Next rd
    Value = True
    RaiseEvent Click
    define_pic
    End Sub

    In pratica per ogni controllo di tipo MyOptionbutton viene impostata la proprietà value = false tranne per quello che ho checkato.
    Però io dovrei dire: per ogni controllo di tipo MyOptionbutton nello stesso frame allora fai quello di cui sopra.
    Forse non sono stata chiara, ma non so come modificare il codice...help!!

  2. #2
    Prova a vedere se hai una proprietà Container dell'oggetto UserControl e modifica il codice come segue:

    codice:
    Private Sub UserControl_Click() 
    Dim rd As Object 
    
    For Each rd In UserControl.Container  
    If TypeOf rd Is MyOptionbutton Then 
    
    rd.Value = False 
    End If 
    Next rd 
    Value = True 
    RaiseEvent Click 
    define_pic 
    End Sub

    Fammi sapere...
    Ciao
    lupusinfabula

    Programmatore VB, ASP, Delphi.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173
    Lo usercontrol non ha la proprietà container, ma l'object rd si.
    Infatti se scrivo

    Private Sub UserControl_Click()
    Dim rd As Object

    For Each rd In UserControl.Parent
    If TypeOf rd Is MyOptionbutton Then
    msgbox rd.Name & "-" & rd.Container
    rd.Value = False
    End If
    Next rd
    Value = True
    RaiseEvent Click
    define_pic
    End Sub

    Mi da il frame di appartenenza. Quindi un passo è fatto, ma ora come posso memorizzarmi (e dove) il frame di appartenenza del mio option checkato per poterlo controllare dentro il form per porre value = false per tutti gli oggetti del tipo MyOptionbutton che appartengono al frame di quello checkato? Sai aiutarmi?

  4. #4
    Prova ad usare l'oggetto Me (che dovrebbe corrispondere a UserControl):

    codice:
    Private Sub UserControl_Click() 
    Dim rd As Object 
    
    For Each rd In Me.Parent   
      If TypeOf rd Is MyOptionbutton Then 
         if Me.Container = rd.Container Then rd.Value = False   
      End If 
    Next rd 
    Value = True 
    RaiseEvent Click 
    define_pic 
    End Sub

    Spero di aver capito bene.

    Ciao
    lupusinfabula

    Programmatore VB, ASP, Delphi.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173
    Ho risolto così:
    Private Sub UserControl_Click()
    Dim rd As Object
    RaiseEvent Click
    For Each rd In UserControl.Parent
    If TypeOf rd Is MyOptionButton Then
    If contenitore = rd.Container Then

    rd.Value = False
    End If
    End If
    Next rd
    Value = True

    define_pic
    End Sub
    Dove contenitore è una variabile pubblica istanziata nel click dei miei option button:
    Private Sub MyOptionButton1_Click()
    Set contenitore = Me.MyOptionButton1.Container
    End Sub
    Così funge!
    Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.