/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Combo box
Fra : Martin Nielsen


Dato : 08-01-02 20:52

Hej NG

Er der en venlig sjæl der gider at hjælpe mig med dette "lille" problem.

Jeg skal lave nogle forskellige omregninger , eks. fra kWh til MJ og fra MJ
til Mcal.
Jeg vil have 2 combo bokse hvor man skal vælge fra hvilken enhed ( 5 ialt)
der skal regnes fra og til.

Det vil være de samme enheder der er i hver box , der skal kunne regnes frem
og tilbage mellem dem.
Indput kommer i text box 1 resultat i text box 2.


På forhånd tak

Martin



 
 
Tomas Christiansen (08-01-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 08-01-02 22:26

Martin Nielsen skrev:
> Er der en venlig sjæl der gider at hjælpe mig med dette "lille"
problem.

Ja.

> Jeg skal lave nogle forskellige omregninger , eks. fra kWh til MJ og
fra MJ
> til Mcal.

Du har beskrevet opgaven.

> Jeg vil have 2 combo bokse hvor man skal vælge fra hvilken enhed ( 5
ialt)
> der skal regnes fra og til.
>
> Det vil være de samme enheder der er i hver box , der skal kunne
regnes frem
> og tilbage mellem dem.
> Indput kommer i text box 1 resultat i text box 2.

Du har også delvist beskrevet hvordan du vil løse opgaven.

Forventer du nu at en fiks og færdig løsning skal dukke op her i
gruppen - eller har du et konkret problem?

Prøv at beskrive HVAD dit problem er/HVAD vi skal hjælpe med.

-------
Tomas


Martin Nielsen (09-01-2002)
Kommentar
Fra : Martin Nielsen


Dato : 09-01-02 13:27


"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:a1fo2k$2hcn$1@news.cybercity.dk...
>
> Forventer du nu at en fiks og færdig løsning skal dukke op her i
> gruppen - eller har du et konkret problem?

Ja , det ville være det bedste men nok knapt så lærerigt så det dropper vi.

> Prøv at beskrive HVAD dit problem er/HVAD vi skal hjælpe med.

Mit problem er at , få mit regnestykke til at vide hvad der er valgt i de 2
combobokse.

Jeg har jo 2 Case`s , eller ?

Hilsen
Martin



Tomas Christiansen (10-01-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 10-01-02 00:15

Martin Nielsen skrev:
> Mit problem er at , få mit regnestykke til at vide hvad der er valgt
i de 2
> combobokse.

Okay! Jeg kan umiddelbart se disse muligheder:

Brug f.eks. en masse if-sætninger hvor du kombinerer fra/til enhed på
formen:

If cboFra.Text = "kWh" And cboTil.Text = "MJ" Then
ElseIf ...
EndIf

Alternativt en kombineret Select-sætning:

Select Case cboFra.Text & "|" & cboTil.Text
Case "kWh|MJ"
Case ...
End Select

Mange andre muligheder findes, men de har alle den svaghed, at hurtigt
bliver meget store og uoverskuelige, hvis der kommer mange enheder der
skal regnes fra/til.

Du skulle måske i stedet overveje at bruge et mellemresultat, som
ALTID er i en bestemt enhed. Hvilken enhed du vælger i er i og for sig
ligegyldigt.

Så vil du kunne skrive:

Resultat = Til(Fra(Værdi, cboFra.Text), cboTil.Text)

hvis funktionerne Fra og Til der defineret i retning af:

Function Fra(ByVal Værdi As Double, _
ByVal Enhed As String) As Double

Select Case Enhed
Case "kWh": Fra = Værdi * XXX
...
End Select
End Function

-------
Tomas


Frank Bertelsen (10-01-2002)
Kommentar
Fra : Frank Bertelsen


Dato : 10-01-02 18:35

En anden mulighed kunne være at lave et array, som indeholder
omregningsfaktorer
for de forskellige enheder, og så anvende propertien 'ListIndex' på hver
combo boks som index til dette array, for på den måde at få fat i netop de to
aktuelle omregningsfaktorer, og så bruge dem i en simpel formel.

Et lille eksempel er nok på sin plads:

Lad os sige at hver combo boks indeholder følgende:
"Millimeter" (ListIndex = 0)
"Centimeter" (ListIndex = 1)
"Meter" (ListIndex = 2)

Så laver vi et array med omregningsfaktorer (med millimeter som grundlag):
Faktor(0) = 1 (1 millimeter = 1 millimeter)
Faktor(1) = 10 (1 centimeter = 10 millimeter)
Faktor(2) = 1000 (1 meter = 1000 millimeter)

Så hedder formlen i al sin enkelthed:
Resultat = Værdi * Faktor(Combo1.ListIndex) / Faktor(Combo2.ListIndex)

Hvis vi f.eks. skal omregne 7 centimeter til meter, så vælges følgende af
brugeren på skærmbilledet:
Combo1.ListIndex = 1
Combo2.ListIndex = 2
Værdi = 7

Indsætter vi nu tallene i formlen får vi følgende:
Resultat = 7 * Faktor(1) / Faktor(2) =>
Resultat = 7 * 10 / 1000 =>
Resultat = 0,07

Fordelen ved at opbygge programmet på denne måde er bl.a., at det ikke fylder
ret meget og er nemt at vedligeholde, f.eks. hvis man vil udvide det med nye
enheder.
Hastigheden er desuden uafhængig af antallet af enheder, det er den ikke
hvis man anvender 'Select Case'.
Typisk vil man opbygge arrayet 'Faktor' i Form_Load, så er det gjort
én gang for alle.


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Tomas Christiansen (10-01-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 10-01-02 21:51

Frank Bertelsen skrev:
> En anden mulighed kunne være at lave et array, som indeholder
> omregningsfaktorer for de forskellige enheder...

Jo, det er en fin måde at løse det på, hvis man kan nøjes med at bruge
faktorer!

Der er jo visse omregninger, som kræver både addition og
mulitiplikation (hvilket selvfølgelig kan løses ved at bruge flere
tabeller).

> Fordelen ved at opbygge programmet på denne måde er bl.a., at det
ikke fylder
> ret meget og er nemt at vedligeholde, f.eks. hvis man vil udvide det
med nye
> enheder.
> Hastigheden er desuden uafhængig af antallet af enheder, det er den
ikke
> hvis man anvender 'Select Case'.

Der er helt klart nogle fordele!

-------
Tomas


Martin Nielsen (10-01-2002)
Kommentar
Fra : Martin Nielsen


Dato : 10-01-02 21:33


"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:a1iiqu$g4f$1@news.cybercity.dk...

> If cboFra.Text = "kWh" And cboTil.Text = "MJ" Then
> ElseIf ...
> EndIf

Jeg valgte denne løsning , mange tak for det.

Martin



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste