[VB6] Probleempje met het maken van een usercontrol

Pagina: 1
Acties:

  • JoeKurr
  • Registratie: Juli 2001
  • Laatst online: 17-11-2025

JoeKurr

Past niet in een MiG-21

Topicstarter
Ik doe een poging om een soort listview te maken waarbij links een afbeelding wordt weergegeven van 50x50 pixels, en daarnaast een stukje tekst komt te staan.

Nou wil ik nieuwe items toevoegen met de aanroep usercontrol1.items.add "blaat", plaatje, maar op een of andere manier krijg ik dit niet voor elkaar.

Ik heb een ActiveX project, met daarin een usercontol en een class module.

Dit is de code die ik gebruik:

Class module:
code:
1
2
3
4
5
Private UsrCtl As UserControl1

Public Sub Add(Caption As String)
    UsrCtl.AddItem Caption           ' <-- Nu gaat het hier fout
End Sub


Usercontrol:
code:
1
2
3
4
5
6
7
8
9
Public Items As New clsItems

Friend Function AddItem(Caption As String)
    With UserControl
        Load .Text1(.Text1.Count)
        .Text1(.Text1.UBound).Top = .Text1(.Text1.UBound - 1).Top + .Text1(.Text1.UBound - 1).Height
        .Text1(.Text1.UBound).Visible = True
    End With
End Function


Probleem is nu, dat als ik een item probeer toe te voegen, ik de foutmelding "Object variable or with block variable not set" krijg.

Wat doe ik fout?

(ben al drie dagen tevergeefs op zoek naar een oplossing)

[ Voor 4% gewijzigd door JoeKurr op 02-12-2002 18:02 . Reden: Code aangepast aan de laatste stand ]

Dutch Flanker Display Team
You can't be lost if you don't care where you are


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 27-08 15:48

Gerco

Professional Newbie

Visual Basic .NET:
1
2
3
4
5
Private UsrCtl As UserControl1

Public Sub Add(Caption As String)
    UsrCtl.AddItem Caption
End Sub

Misschien is het een idee om even een UserControl1 object aan te maken?

Visual Basic .NET:
1
2
3
4
Public Sub Add(Caption As String)
    Set UsrCtl = New UserControl1
    UsrCtl.AddItem Caption
End Sub


Ik denk alleen niet dat dit is wat je wilt, je moet er gewoon 1 op je Form pleuren en dan die aanspreken, net als een gewone control.

[ Voor 32% gewijzigd door Gerco op 02-12-2002 17:19 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • JoeKurr
  • Registratie: Juli 2001
  • Laatst online: 17-11-2025

JoeKurr

Past niet in een MiG-21

Topicstarter
Helaas, dat werkt ook niet.
Ik heb deze code op mijn form staan:

code:
1
UserControl1.Items.Add "ff testen...", plaatje


Volgens VB gaat het ook in die regel fout, op het form dus.
De code in mijn usercontrol wordt niet uitgevoerd.

Dutch Flanker Display Team
You can't be lost if you don't care where you are


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 17:06

Sponge

Serious Game Developer

code:
1
Public Items As [b]new[/b] clsItems


of

code:
1
Load .Text1(.Text1.Count +1)


? :)

  • JoeKurr
  • Registratie: Juli 2001
  • Laatst online: 17-11-2025

JoeKurr

Past niet in een MiG-21

Topicstarter
41.6C.6D.61.72 schreef op 02 december 2002 @ 17:51:

1:

code:
1
Public Items As [b]new[/b] clsItems


of

2:

code:
1
Load .Text1(.Text1.Count +1)


? :)
1: Kleine verbetering. Ik krijg nog steeds dezelfde foutmelding, maar nu op de regel UsrCtl.AddItem Caption in de class module.

2: Dat werkt niet, de hoogste waarde uit de control-array zit in de eigenschap UBound. De eigenschap Count is al UBound + 1.

Dutch Flanker Display Team
You can't be lost if you don't care where you are


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 27-08 15:48

Gerco

Professional Newbie

JoeKurr schreef op 02 december 2002 @ 18:00:
1: Kleine verbetering. Ik krijg nog steeds dezelfde foutmelding, maar nu op de regel UsrCtl.AddItem Caption in de class module.
Dat is ook niet zo raar, want je UsrCtl variabele is Nothing, heeft geen waarde. Als je Dim UsrCtl As UserControl1 doet, heeft UsrCtl nog geen waarde, die moet je eerst zetten.

Je Class heeft dus een reference nodig naar de UserControl1 die hij wil gaan bewerken, die moet je wel eerst doorgeven anders krijg je dit soort errors.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • JoeKurr
  • Registratie: Juli 2001
  • Laatst online: 17-11-2025

JoeKurr

Past niet in een MiG-21

Topicstarter
Klopt, maar als ik

code:
1
Set UsrCtl = New UserControl1


doe, dan krijg ik de melding "Invalid use of the keword New"

Dutch Flanker Display Team
You can't be lost if you don't care where you are


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 27-08 15:48

Gerco

Professional Newbie

JoeKurr schreef op 03 december 2002 @ 14:03:
doe, dan krijg ik de melding "Invalid use of the keword New"
Klopt ook, je mag namelijk geen instances van een UserControl maken met het "new" keyword :)

Ik neem aan dat je je class wat functies wilt laten uitvoeren binnen de usercontrol? Dan maak je toch ergens een instantie van die klasse niet waar? Geef die klasse een variabele "Owner As UserControl1" en zet die op de usercontrol na het creeren van de klasse. Even een voorbeeldje:

Usercontrol:
Visual Basic .NET:
1
2
3
4
5
6
7
Public Sub DoeIetsCools()
  Dim c As CooleClass
  Set c = new CooleClass

  Set c.Owner Me ' Hier geef je dus een referentie naar je UserControl aan je Class
  c.DoeIetsCools
End Sub


Class:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit ' ALTIJD aanzetten!!!

Public Owner As UserControl1 ' Niet helemaal netjes om deze Public te maken, maar ik doe het lekker toch

Public Sub DoeIetsCools()
  If Not Owner is Nothing Then
    Owner.Functie1
    Owner.Sub2
    ' Whatever
    ' etc
  End If
End Sub

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • JoeKurr
  • Registratie: Juli 2001
  • Laatst online: 17-11-2025

JoeKurr

Past niet in een MiG-21

Topicstarter
Thanx, ga ff proberen

Dutch Flanker Display Team
You can't be lost if you don't care where you are


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 27-08 15:48

Gerco

Professional Newbie

Oeps, ben een '=' vergeten in deze regel: "Set c.Owner = Me", maar dat had je natuurlijk al gezien :)

Waarom werkt [ b] niet meer???

[ Voor 46% gewijzigd door Gerco op 04-12-2002 09:51 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • JoeKurr
  • Registratie: Juli 2001
  • Laatst online: 17-11-2025

JoeKurr

Past niet in een MiG-21

Topicstarter
Had ik idd al gezien :)

Bedankt, tis precies wat ik zocht.
(nu alleen nog een beetje mee klooien om het echt te gaan snappen)

Dutch Flanker Display Team
You can't be lost if you don't care where you are

Pagina: 1