[VB] Usercontrol en userdefined type

Pagina: 1
Acties:

  • Lithium_Grim
  • Registratie: Mei 2006
  • Laatst online: 12-12-2025
Ik zit met een probleem waar ik even geen raad meer mee weet. Ik maak een usercontrol rond een MSFlexgrid. Ik wil aan een cel een aantal extra kenmerken toekennen. Ik heb dus iets als onderstaand

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
Public Type cSQL
   sText as String
   Id As Single
End Type 

Dim m_SQL() As cSQL 
Public Property Let Rows(ByVal New_Rows As Long)
    ............
    ReDim Preserve m_SQL(New_Rows * MSFlexGrid1.Cols)
    ..........
    PropertyChanged "Rows"
    
End Property
Public Property Set CellDropDownInput(ByVal Row As Long, ByVal Col As Long, ByVal NewVal As cSQL)
    
    Set m_SQL(CellIndex(Row, Col)) = NewVal
    
End Property

Public Property Get CellDropDownInput(ByVal Row As Long, ByVal Col As Long) As cSQL
    
    '//Props voor de te gebruiken Dropdownlists in een cell
    Set DropDownInput = m_SQL(CellIndex(Row, Col))
    
End Property

Public Function CellIndex(ByVal Row As Long, ByVal Col As Long) As Long

    CellIndex = Row * MSFlexGrid1.Cols + Col

End Function


Helaas compileert dit niet omdat hij beweert dat de parameters voor set en get niet gelijkt zijn (en nog een riedel tekst). Heb het geprobeerd met Let en Get, maar als ik de property wil vullen gebeurt er niets. Ik heb al geprobeert om er een class (ipv type) van te maken, maar dat lukt ook niet.

Kortom hoe kan ik de user defined type zo koppelen aan de property zodat deze ook in de aanroepende code gebruikt kan worden. Wie kan mij verder helpen? _/-\o_

[ Voor 16% gewijzigd door Lithium_Grim op 10-05-2006 22:43 . Reden: Code foutje ]


  • biomass
  • Registratie: Augustus 2004
  • Laatst online: 22:51
Hint: Ga een uurtje wat anders doen, dan zie je de compile-time type mismatches in je properties wel. :)

  • Lithium_Grim
  • Registratie: Mei 2006
  • Laatst online: 12-12-2025
biomass schreef op woensdag 10 mei 2006 @ 21:48:
Hint: Ga een uurtje wat anders doen, dan zie je de compile-time type mismatches in je properties wel. :)
Yep als je die bij de Get bedoeld was ik vergeten terug te zetten, maar zelfs nu krijg ik nog steeds dezelfde foutmelding (heb code hierboven aangepast)

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Public property Let zou in dit geval correct zijn.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Lithium_Grim
  • Registratie: Mei 2006
  • Laatst online: 12-12-2025
Heb nu:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
Public Property Let CellDropDownInput(ByVal Row As Long, ByVal Col As Long, ByVal NewVal As cSQL)
    
    Set m_SQL(CellIndex(Row, Col)) = NewVal
    
    cmb.FontName = MSFlexGrid1.CellFontName
    cmb.FontSize = MSFlexGrid1.CellFontSize
    
    MSFlexGrid1.RowHeight(Row) = cmb.Height
    
End Property


Maar dan komt bij compilen : User-defined type may not be passed Byval -> dat weghalen en hij compiled nog niet want dan geeft hij aan dat bij
code:
1
Set m_SQL(CellIndex(Row, Col)) = NewVal


Compile error: Object required... what the f^&%^&%

[ Voor 18% gewijzigd door Lithium_Grim op 10-05-2006 22:35 . Reden: typo ]