09. april 2002 - 14:50Der 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
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.
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 :-)
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.
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
Jo jeg kender til objekter og instanser da jeg har programmeret i Java i 2 år.
Synes godt om
Ny brugerNybegynder
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.