Avatar billede maagefinke Nybegynder
14. april 2003 - 23:42 Der er 6 kommentarer og
1 løsning

VB 6.0 Hvor placerer jeg en formel som virker overalt i programme

if check1.value = 1 then
resultat = a+b+c
else
resultat = a+b
end if

Hvor skal jeg anbringe en sådan sætning i et program hvis den skal virke i hele programmet og hvordan fortæller jeg, at jeg vil have den afviklet?
Helst et svar beregnet for dosmere.
Avatar billede sorenstrom Nybegynder
14. april 2003 - 23:58 #1
Du skal have oprettet en funktion i et modul
Klik på Project-menuen og vælg Add Module

I modulet skriver du f.eks.:
Public Resultat
Function Beregn()
  if frmBeregn.check1.value = 1 then
    resultat = frmBeregn.a + frmBeregn.b + frmBeregn.c
  Else
    resultat = frmBeregn.a + frmBeregn.b
  End If

I din Form kan du så f.eks. skrive

Private Sub Command1_Click()
  Beregn
End Sub
Avatar billede maagefinke Nybegynder
15. april 2003 - 00:08 #2
Foreløbig tak, men funktionen skal kaldes af sig selv. Det mener jeg at man kan. Skriver jeg så bare Beregn på det sted i koden hvor jeg vil have beregningen foretaget?
Avatar billede sorenstrom Nybegynder
15. april 2003 - 00:10 #3
Netop
Avatar billede maagefinke Nybegynder
15. april 2003 - 00:16 #4
OK, det prøver jeg i morgen. Hvis det ikke virker, kræver jeg mine points tilbage!!!
Tak for hjælpen.
Avatar billede martin_moth Mester
15. april 2003 - 10:18 #5
Du kan gøre funktionen meget bedre, ved at sende fx. kontrollerne eller blot a,b,c og en true/false (værdien af checkboxen) med som parametre - så kan funktionen også bruges på ALLE andre forme, og ikke kun på frmBeregn!

Og det er jo egentligt det, der er meningen med funktioner der er placeret i moduler, ik' ;o)
Avatar billede maagefinke Nybegynder
15. april 2003 - 10:54 #6
Det kan enhver jo sige? Hvad med lidt kode til det? Og hvordan kan jeg give dig point uden at snyde?
Avatar billede martin_moth Mester
15. april 2003 - 11:06 #7
Jeg skal ikke have points...

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmfunctionx.asp

Altså noget i retning af

Function Beregn(Byval a as integer, Byval b as integer, byval c as integer, checked as Byte) as Integer
  if Checked = 1 then
    Beregn = a + b + c
  Else
    Beregn = a + b
  End If
End Function

Herefter kalder du blot

Msgbox Beregn(a,b,c,check1.value)

eller

Dim Resultat
Resultat = Beregn(2,3,4,check1.value)

eller...

PS: En function bør altid returnere en værdi i dens navn, ellers bør en Sub bruges. Derudover bør der aldrig arbejdes direkte på variabler, men disse bariabler bør overføres vha. Byval - begge dele anvendes i ovenstående eksempel
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