Vraag & Antwoord

Programmeren

Waarom kan dit niet?

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 [url=http://www.developer.com/net/vb/article.php/1430631]hier[/url] 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

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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