[VB] Functie aanroep vanuit module (oa)

Pagina: 1
Acties:

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 17-09 12:33
Ik ben bezig met het maken van ActiveX Control. Ipv een formulier heb je een UserControl. Daar kun je dat je labels, shapes en anders componenten oplaatsen. Om eigenschappen als bv de caption van een labeltje extern beschikbaar te maken moet je die variabele private declareren en met 'property get' & 'let' kun je deze lezen en schrijven.
Nou zou je dit met de 'ActiveX Control Interface Wizard' kunnen doen. Nou voel ik mij eigenlijk wel een beetje lullig, maar waar vind ik die? Overal in de help wordt het genoemd dat ie bestaat, maar nergen staat beschreven waar die te vinden is.

Verder heb ik een module toegevoegd die de weergave van mijn component bepaald. Vanuit de UserControl kan ik de 'geefWeer' procedure die die andere module netjes aanroepen. Maar vanuit die module kan ik niet de eigengemaakte get functies (public) van de usercontrol aanroepen. Waarom niet?

Hoe kan ik in VB het autoformat van code uitzetten. Ik wil dit graag bereiken:
code:
1
2
variablemeteenlangenaam = 2
kortevarnaam        = 3

want vb maakt er automatisch dit van:
code:
1
2
variablemeteenlangenaam = 2
kortevarnaam = 3

(dit valt onder het kopje kleine ergenissen :) )
Het afvinken van automatisch code controleren opfouten heeft hierop geen invloed.

Misschien zijn het wat basis vraagjes, maar ik kom er niet uit met de handleiding en de help.

Verwijderd

Nou zou je dit met de 'ActiveX Control Interface Wizard' kunnen doen. Nou voel ik mij eigenlijk wel een beetje lullig, maar waar vind ik die?
Je hoeft je niet lullig te voelen want dat ding zit uiteraard op de meest logishe plek verstopt...*NOT*.. in je project pull down menutje Add usercontrol, en dan zit in het popupje wat je dan krijgt... erg logish erg logish..
Hoe kan ik in VB het autoformat van code uitzetten.
Ah deze is simpel, *NIET* stel voor dat je'm verplaatst naar het kopje geaccepteerde ergenissen :Y)

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 17-09 12:33
Bedankt. Ik zal de wizard morgen gelijk opzoeken.

Maar ik heb dus een UML analyse eerst gemaakt. En daar kwam een aparte onderdeel uit voor de weergave. Die functies en procedures voor de weergave wil ik eigenlijk niet in de UserControl zelf hebben staan. Wat is dat een mogelijkheid.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
En er zijn er meer, veel meer .... ;)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op zondag 14 oktober 2001 15:28 schreef Tim Schuhmacher het volgende:
Maar ik heb dus een UML analyse eerst gemaakt. En daar kwam een aparte onderdeel uit voor de weergave. Die functies en procedures voor de weergave wil ik eigenlijk niet in de UserControl zelf hebben staan. Wat is dat een mogelijkheid.
In UserControl_Paint kun je de code opgeven om je usercontrol te painten. Daar kun je dus een aanroep zetten naar een aparte tekenmodule.
Uit 1 van mijn projectjes:
code:
1
2
3
4
Private Sub UserControl_Paint()
    If Not Picture Is Nothing Then _
      PaintPicture Picture, PictureXOffset * Screen.TwipsPerPixelX, PictureYOffset * Screen.TwipsPerPixelY
End Sub

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


  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 17-09 12:33
ja, maar ik wil het juist anderso,
In die teken module zit code als:
code:
1
2
if apparaatAan then
  shape.bordercolor = getAankleur

de functies getAankleur en apparaatAan zijn gedefineerd in de UserControl, want deze hebben als result een variable die private gedeclareerd is in de UserControl

dit zou ik dus willen bereiken:
code:
1
2
if UserControl.apparaatAan then
  shape.bordercolor = UserControl.getAankleur

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op zondag 14 oktober 2001 17:51 schreef Tim Schuhmacher het volgende:
ja, maar ik wil het juist anderso,
In die teken module zit code als:
[lap code]
Aha... maar de code in de module moet je nog steeds aanroepen vanuit de UserControl_Paint, anders gaat het niet. Wat je nodig hebt is een instance van je UserControl in de Module.

Dan roep je dus je Module zo aan:
code:
1
2
3
Public Sub UserControl_Paint()
  Teken Me
End Sub

En dan in je module:
code:
1
2
3
4
5
Public Sub Teken(ctl as <naam van je control>)
  ctl.apparaatAan
  shape.borderColor = ctl.getAanKleur
  ' Doe vanalles
End Sub

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

Pagina: 1