Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Waarom kan dit niet?

None
10 antwoorden
  • Ik heb 3 Textboxen. txtBedrag(0), txtBedrag(1) en txtTarief.

    Ik heb in een classmodule wat events beschreven om van een Textbox te eisen dat alleen valuta's kunnen worden ingevuld.
    Dit lukt niet bij txtBedrag(array), maar dit is juist de bedoeling.

    [code:1:4ec56a3c73]Dim myClass As New CurrencyBoxClass

    Private Sub Form_Load()
    Set myClass.CurrencyBox = txtBedrag(0) 'lukt niet
    Set myClass.CurrencyBox = txtTarief 'lukt wel
    End Sub[/code:1:4ec56a3c73]

    bedankt,

    Rob
  • dit ljikt mij soort van vb, naar mijn idee moet er nog een option bij.
    Ik denk zo:
    Set myClass.CurrencyBox = txtBedrag(0).text
  • Sorry! Ik heb het inderdaad over Visual Basic (versie 6)

    Nee, Arno, denk het niet want txtTarief (geen array) lukt wel.
    De vraag is of het met control-arrays ook kan.
    Bedankt voor je suggestie in ieder geval.

    Rob
  • haal die 'set' eens weg? (voor de variabeledeclaraties)
  • Dit maakt geen verschil.
    Ik krijg steeds de melding

    Run-time error '459'

    "Object or class does not support the set of events."


    ALLEEN dus bij txtBedrag(0). txtTarief werkt wel.
  • en wat als je eerst doet

    a=ding(0)

    andereding=a

    ?

    (ik weet ff de variabelenamen niet meer :P)
  • je bedoelt:

    [code:1:f49705dd27]Dim myClass As New CurrencyBoxClass
    Dim TB As TextBox

    Private Sub Form_Load()
    Set TB = txtBedrag(0)
    Set myClass.CurrencyBox = TB
    End Sub[/code:1:f49705dd27]

    Dat geeft hetzelfde probleem

    ROB
  • Uit de MSDN Library:
    [quote:d101c26b78]Not every component supports client sinking of events. This error has the following cause and solution:

    You tried to use a WithEvents variable with a component that can't work as an event source for the specified set of events. For example, you may be sinking events of an object, then create another object that Implements the first object. Although you might think you could sink the events from the implemented object, that isn't automatically the case. Implements only implements an interface for methods and properties.
    You can't sink events for a component that doesn't source events.

    WithEvents isn't supported for Private UserControls, because the type-info needed to raise the ObjectEvent isn't available at runtime.
    [/quote:d101c26b78]
    Op de manier waarop jij het wil doen, gaat het dus niet lukken.
    Wat wel kan is het op deze manier doen:
    Verander de class CurrencyBoxClass als volgt:
    [code:1:d101c26b78]
    Private chkText As String
    Public Event OnChange(ByVal CheckThis As String)

    Private Sub Change(ByVal CheckThis As String)
    RaiseEvent OnChange(CheckThis)
    End Sub

    Public Property Get Text() As String
    Text = chkText
    End Property

    Public Property Let Text(ByVal CheckThis As String)
    chkText = CheckThis
    Call Change(chkText)
    End Property

    ' En nog andere code
    [/code:1:d101c26b78]
    En in het formulier:
    [code:1:d101c26b78]
    Private WithEvents objBox As CurrencyBoxClass

    Private Sub Form_Load()
    Set objBox = New CurrencyBoxClass
    End Sub

    Private Sub objBox_OnChange(ByVal CheckThis As String)
    If Not IsNumeric(CheckThis) Then
    MsgBox "Dit is geen numerieke waarde!"
    End If
    End Sub

    Private Sub txtBedrag_Change(Index As Integer)
    If txtBedrag(Index).Text <> "" Then
    objBox.Text = txtBedrag(Index)
    End If
    End Sub

    [/code:1:d101c26b78]

    Hoop dat dit helpt. Ik heb trouwens de voorbeeldcode
    hier vandaan
  • en, uh, kap met dat waardeloze 'set x=y', lekker om je code zo onleesbaar mogelijk te maken :/
  • waarom een class gebruiken? zet het in een module en het werkt..

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.