Avatar billede dennish Nybegynder
09. april 2002 - 14:50 Der er 12 kommentarer og
3 løsninger

globale variabler og globale functioner /sub i VB

Hvordan laver globale varibaler og globale Funktioner og sub i VB 6.0. det skal være sådan at jeg kan kalde disse sub og functioner, idet jeg skal bruge dem mange gange forskellige steder fra
Avatar billede bennytordrup Nybegynder
09. april 2002 - 14:52 #1
Erklær dem i et modul uden private foran
Avatar billede bennytordrup Nybegynder
09. april 2002 - 14:53 #2
Evt. med public i stedet for private
Avatar billede jelzin101 Praktikant
09. april 2002 - 14:53 #3
project>>add>>module

smid dem her så kan du kalde dem over alt.
Avatar billede dennish Nybegynder
09. april 2002 - 14:56 #4
hvordan kalder jeg så mine globale attributter sub og functions
Avatar billede bennytordrup Nybegynder
09. april 2002 - 14:57 #5
Som du ville kalde dem, hvis de var erklæret lokalt i et class module eller i en form
Avatar billede bennytordrup Nybegynder
09. april 2002 - 14:59 #6
' Module.bas:

Public MinVar as Integer

Public Sub MinSub
  MinVar = Day(Date);
end sub

' Form.frm

private sub Form_Loas
  me.Caption = MinVar
end sub
Avatar billede bennytordrup Nybegynder
09. april 2002 - 14:59 #7
Sorry, det skulle være Form_Load
Avatar billede dennish Nybegynder
09. april 2002 - 15:02 #8
Det virker :-) Hvad er forskellen egentlig imellem et almindlig modul og et klasse modul og hvornår bruger man den ene frem for den anden ?
Avatar billede bennytordrup Nybegynder
09. april 2002 - 15:07 #9
Et modul er "bare" en holdeplads for variable og rutiner, der bruges flere steder.
Et klassemodul indeholder et objekt, som indkapsler nogle private variable og rutiner, som samarbejder på en eller anden led. For at bruge denne klasse, skal den instantieres der, hvor den skal bruges.
Avatar billede dennish Nybegynder
09. april 2002 - 15:36 #10
benny: ok så det du faktsik mener at et klassemodul er et objekt der skal instancieres, men hvorn¨år bruger man det ene og det andet. Helst et lille eksempel :-)
Avatar billede martin_moth Mester
09. april 2002 - 17:45 #11
I et modul smider du de variable og functioner og procedurer, du vil kunne kalde fra diverse forme i dit projekt. Det smarte er, at du nemt kan genbruge dem i andre projekter, f.eks. et modul til funktioner der håndterer strenge, tid, matematiske funktioner, sortering osv.

Et klasse-modul bruger du til at definere dine objekter. Hvis du ingenting ved om objekter, så tror jeg ikke jeg vil give mig i kast med at forklare det her i detaljer - der kræver vist lidt mere plads. Men kender du lidt til objekter, kan du i en klasse definere hvilke properties m.v. der skal defineres for dit objekt.


_______________________________________________________

Eksempel 1: Class-module

Her et eksempel på et Terning-objekt (en terning med et vilkårligt antal sider) der er defineret i et class-module

Option Explicit
    ' Oplysningerne er private, så de kun kan tilgås
    ' gennem klassens metoder  (Indkapsling)
    Private TAntalSider As Integer
    Private TAntalØjne As Integer
   
Public Property Let PutSider(ByVal vNewValue As Integer)
    ' Sæt hvor mange sider terningen skal have
    TAntalSider = vNewValue
End Property

Public Property Get Size() As Integer
    ' Aflæs hvor mange sider terningen har
    Size = TAntalSider
End Property

Public Sub Kast()
    ' Kast terningen
    ' Den viser et antal øjne mellem 1 og TAntalSidet
    Randomize
    TAntalØjne = Int(1 + Rnd * TAntalSider)
End Sub

Public Property Get øjne() As Integer
    ' Aflæs hvor mange øjne terningen viser
    øjne = TAntalØjne
End Property



Du kan så i en form oprette et objekt fra klassen på følgende måde:

Dim Terning As New clsCyberDicePlus
og f.eks. anvende egenskaben PutSider m.m.
    Terning.PutSider = 6
    Terning.AntalKast = 5


_______________________________________________________

Eksempel 2, Alm. Modul, der hedder KontrolRutiner, der indeholder Sub'en Check_numerisk, der kontrollere, at der kun må intastes tal og komma i et textfelt e.l.

Public Sub Check_numerisk(tast As Integer, decimaltal As Boolean)
  ' Hvis decimaltal = true, skal decimalpunkt også accepteres
  ' (komma ændres til punktum)
  ' Checker om tast er et numerisk tastetryk
  ' tallene 0-9 samt <Backspace> accepteres
  ' <Enter> laves om til <Tab>
  Select Case tast
          Case vbKeyBack, 48 To 57
          Case vbKeyReturn
              tast = 0
              SendKeys "{tab}"
          Case 44, 46
              If decimaltal Then
                  tast = 46
              Else
                  tast = 0
                  MsgBox "Indtast kun tal", vbExclamation
              End If
          Case Else
              tast = 0
              MsgBox "Indtast kun tal", vbExclamation
  End Select
End Sub

Fra en form kan du så anvende en procedure fra KontrolRutiner som følger

Private Sub Text1_KeyPress(KeyAscii As Integer)
  Check_numerisk KeyAscii, False
End Sub

/martin
Avatar billede martin_moth Mester
09. april 2002 - 17:47 #12
PS. Mht. class-module, så har jeg forudsat, at modulet hedder clsCyberDicePlus, derfor linien Dim Terning As New clsCyberDicePlus
Avatar billede dennish Nybegynder
09. april 2002 - 18:13 #13
Takker i har squ allesammen for vildt tjeck på VB, har normalt programmeret i Java, men nu er det VB :-(
Avatar billede jelzin101 Praktikant
09. april 2002 - 18:17 #14
takker for pts :0)

//*Jelzin101
<reklame>
www.dinos.dk - www.vojens.tk
</reklame>
Avatar billede dennish Nybegynder
09. april 2002 - 18:40 #15
Jo jeg kender til objekter og instanser da jeg har programmeret i Java i 2 år.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester