Hoe een functie aanroepen via een module

Status
Niet open voor verdere reacties.

geenID

Gebruiker
Lid geworden
1 jul 2009
Berichten
312
Hallo

Ik heb een klein vraagje.

Ik heb een aantal functies in een eigen module gezet, vervolgens deze module bij het hoofdproject toegevoegd.
Nu wil ik in het hoofdproject(form1) een functie roepen uit de module.
Ik heb de module geimporteerd in form1, met de volgende code: Imports Project.Module1

Dus hoe kan ik nu een functie roepen voor de code in form1?
 
Je functies moeten gedeclareerd zijn met het Public sleutelwoord. Alleen dan kun je ze vanuit elk ander document binnen je project aanroepen.
Het is trouwens niet nodig je module te importen. Je kan je functie ook zonder de module naam aanroepen.

Bij een class is dat anders.
 
In de eerste plaats bedankt voor de uitleg :)
En in de 2e plaats bedankt, want het werkt nu :D

Toch nog een klein vraagje: Wat is het verschil tussen een module en een class?
 
Van een class kan je instanties maken waarmee je de waarden van die class voor elke instantie anders kunt maken. Bij een module kan je geen isntanties maken en als je een waarde veranderd in die module dan is het voor heel het programma.

Hopelijk begrijp je het nu?

Veel programeer succes!
 
Een module is een bestand waarin je methods (functies en subroutines) die een groot deel uitmaken van je programma in plaats die overal in je project beschikbaar zijn. Op die manier hoef je ze niet in je form code venster te plaatsen en hou je deze mooi schoon. De methods in een module zijn ook direct aan te roepen zonder dat je iets hoeft je importeren of de declareren buiten de module (dus Imports Project.Module1 is dus niet nodig).

Een class is meer bedoeld voor "objecten" met bijbehorende methods en properties. Bijvoorbeeld een StreamReader of een TextBox. Maar ook bijvoorbeeld een auto, als je meer de Object Oriented Programming kant op wilt gaan. Een class is alleen beschikaar wanneer je eerst een instance maakt van het object, bijvoorbeeld:

Code:
Dim Reader As New StreamReader
MessageBox.Show(Reader.ReadLine)

of:

Code:
Dim MyCar As New Car
MyCar.Make = Chevrolet
MyCar.StartEngine()
MyCar.Drive()
 
@The Mighty Atom
je zei: 'Een class is alleen beschikaar wanneer je eerst een instance maakt van het object'
Dit is niet 100% waar,
Je kan ook statische properties, methodes, .. hebben door gebruik te maken van de 'Shared' keyword

Voorbeeld:

Class:
Code:
Public Class test
    Public Shared Sub main()
        MsgBox("hiervoor heb je geen nieuwe instantie nodig")
    End Sub
End Class

Je kan gerust de methode 'main' aanroepen zonder een nieuwe instantie
Code:
test.main()

Veel programeer plezier :D
 
Ah, ik denk dat ik het nu begrijp. Bedankt allebij :)

ps; Ik heb een programma met vele functies, dus dan is het handig om een module te gebruiken, ipv class.
 
Inderdaad, maar dan kun je die 'main' method dus net zo goed in een module zetten.
Wanneer het om objecten gaat zoals bijvoorbeeld een auto, dan kun je wel steeds een nieuwe instantie maken maken met het New sleutelwoord.
 
@The Mighty Atom
'Inderdaad, maar dan kun je die 'main' method dus net zo goed in een module zetten.'

Dat is waar maar als je later met voorbeeld C# begint kan je niet meer gebruik maken van een module (alleen vb ondersteunt modules) en ga je toch de shared/static sleutelwoord moeten gebruiken.
En uit ervaring kan ik spreken dat als je het ooit van plan bent je nu beter met classes kunt werken ipv modules. Dan ga je het sneller begrijpen als je in een andere taal moet programmeren.

@geenID
Ik vind persoonlijk van niet omdat VB deze alleen ondersteund en als je dus een andere taal leert je toch classes gaat moeten gebruiken. Dus vind ik dat je beter direct met classes werkt.
Maar voor de rest mag je dat zeker doen :)

Veel succes!
 
Hmm, modules lijkt me handiger dan classes.
 
Laatst bewerkt:
Klopt helemaal, Matthi, ikzelf gebruik modules ook enkel en alleen voor het declareren van public variabelen die ik overal in mijn project gebruik, ik zet er dus methods in.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan