/ 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
Jeg prøver igen !
Fra : Ole J. Hansen


Dato : 05-02-02 11:30

Hej NG
Mit tidligere spørgsmål var forkert, og derfor prøver jeg igen.
Mit Analogt Ur der har jeg sekundtviser og minutviser kører fint med
følgende kode:
Dette er sekundtviseren:
Sub Stegnviser(nu As Integer, max As Integer)
ForeColor = "640000"
Line (0, 0)-(-Cos(max / 60 * 6 * (nu + 15) / 180 * pi), Sin(max / 60 * 6
* (nu + 15) / 180 * pi))

End Sub

Jeg sætter tiden med:
s = Second(Now)
Stegnviser s, 60

Jeg kan ikke få timeviseren til at køre rigtigt, er der en der har en god
ide.
På forhånd tak.
m.v.h.
ole



 
 
preben nielsen (05-02-2002)
Kommentar
Fra : preben nielsen


Dato : 05-02-02 18:02


"Ole J. Hansen" <ojh@hansen.mail.dk> skrev i en meddelelse
news:3c5fb44e$0$22397$edfadb0f@dspool01.news.tele.dk...
> Hej NG
> Mit tidligere spørgsmål var forkert, og derfor prøver jeg
igen.
> Mit Analogt Ur der har jeg sekundtviser og minutviser
kører fint med
> følgende kode:
> Dette er sekundtviseren:
> Sub Stegnviser(nu As Integer, max As Integer)
> ForeColor = "640000"
> Line (0, 0)-(-Cos(max / 60 * 6 * (nu + 15) / 180 *
pi), Sin(max / 60 * 6
> * (nu + 15) / 180 * pi))
>
> End Sub
>
> Jeg sætter tiden med:
> s = Second(Now)
> Stegnviser s, 60
>
> Jeg kan ikke få timeviseren til at køre rigtigt, er der en
der har en god
> ide.

Uden at teste:

h = Hour(Now()) Mod 12
Stegnviser h, 12

Dette burde placere timevisere præcis på et af de 12
klokkeslet. Hvis klokken er 17:59, så er timeviseren på 5.
Hvis du vil have den til at være tættest på 6, så må du selv
klare resten


--

/\ preben nielsen
\/\ prel@post.tele.dk


> På forhånd tak.
> m.v.h.
> ole
>
>


Tomas Christiansen (05-02-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 05-02-02 23:37

Ole J. Hansen skrev:
> Mit tidligere spørgsmål var forkert, og derfor prøver jeg igen.
> Mit Analogt Ur der har jeg sekundtviser og minutviser kører fint med
> følgende kode:
> Dette er sekundtviseren:
> Sub Stegnviser(nu As Integer, max As Integer)
> ForeColor = "640000"

Hvad er idéen med at forsøge at tildele en streng til ForeColor?
ForeColor er da et tal!

> Line (0, 0)-(-Cos(max / 60 * 6 * (nu + 15) / 180 * pi), Sin(max
/ 60 * 6
> * (nu + 15) / 180 * pi))

Dette udtryk kan gøres en hel del enklere, f.eks:

Pos = 2 * Nu / Max * PI
Line (0, 0)-(Sin(Pos), Cos(Pos))

....
> Jeg kan ikke få timeviseren til at køre rigtigt, er der en der har
en god ide.

Du kan regne viserne position "med decimaler" ud på følgende måde:

Dim dDatoTid As Date
Dim dLigeNu As Double
Dim dNySek As Double
Dim dNyMin As Double
Dim dNyTim As Double

dDatoTid = Now
dLigeNu = CDbl(dDatoTid) - Int(CDbl(dDatoTid))
dNyTim = dLigeNu * 24
dNyMin = (dNyTim - Int(dNyTim)) * 60
dNySek = Second(dDatoTid)

Hvor resultatet altså er dNyTim, dNyMin og dNySek.

Med denne udregning, vil den nøjagtige placering af time- og
minut-viserne blive udregnet.

Bemærk at da opløsningen i funktionen Now alligevel kun er 1 (et)
sekund, kan man ligeså godt bruge Second(dDatoTid) frem for at regne
sig frem til resultatet.

For at kunne udnytte resultatet, kræver det naturligvis at du ændrer
din visertegningsprocedure, så den vi modtage kommatal i stedet for
heltal. Den KUNNE f.eks. se således ud:

Sub Viser(ByVal dNu As Double, ByVal dMax As Double, ByVal dLængde As
Double, ByVal iBredde As Integer, ByVal lFarve As Long)
Dim dPos As Double
dPos = 2 * dNu / dMax * PI
pbUr.DrawWidth = iBredde
pbUr.Line (0, 0)-(dLængde * Sin(dPos), dLængde * Cos(dPos)), lFarve
End Sub

Her er tilmed mulighed for at angive viserens farve, tykkelse og
længde.
pbUr er den picturebox, som jeg har tegnet uret i. Ændr det til hvad
du måtte ønske.

-------
Tomas


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste