Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Kello

Meitsi [21.10.2004 19:12:32]

#

Tällä koodilla saat formille kellon. Viivan pisteiden laskennasta olisi voinut tehdä funktion, jolloin koodista olisi tullut lyhyempi, mutta sen voit toteuttaa itse. Laita formille timer (timer1).

Tämä koodi formiin

Dim keskix As Integer
Dim keskiy As Integer
Dim kulma As Integer
Dim etäisyys As Integer
Dim viivaX As Integer
Dim viivaY As Integer
Option Explicit
Private Sub Form_Load()
    'aluksi määritellään muuttujia
    keskix = Form1.ScaleWidth / 2
    keskiy = Form1.ScaleHeight / 2
    kulma = 0
    etäisyys = Form1.ScaleHeight / 3
    'aika
    Timer1.Interval = 1000
End Sub
Private Sub Form_Resize()
    'kun formia skaalataan, keskipiste ja etäisyys muuttuvat
    keskix = Form1.ScaleWidth / 2
    keskiy = Form1.ScaleHeight / 2
    etäisyys = (Form1.ScaleHeight / 10) + (Form1.ScaleWidth / 10)
End Sub

Private Sub Timer1_Timer()
    Form1.Cls 'tyhjätään ikkuna
    Form1.Caption = "Kello on " & Hour(Now) & ":" & Minute(Now) & ":" & Second(Now) 'Asetetaan ikkunan title
    ' vohveli kerto sin + cos koodin, propsit sille
    ' sooda kerto atn jutskan, sillekkin propsit
    ' Piirretään viisarit
    ' Sekunnit
    kulma = (360 / 60) * Second(Now) 'Jaetaan 360 / 60 ja kerrotaan se sekunneilla
    viivaX = keskix + Sin(kulma * Atn(1) / 45) * etäisyys 'tutkitaan viivan loppupään x
    viivaY = keskiy + -Cos(kulma * Atn(1) / 45) * etäisyys 'tutkitaan viivan loppupään y
    Form1.Line (keskix, keskiy)-(viivaX, viivaY), vbBlack 'piirretään viisari
    'minuutit
    Form1.DrawWidth = 2 'paksumpi viiva
    kulma = (360 / 60) * Minute(Now) 'sama kuin edellisessä mutta kerrotaan minuuteilla
    viivaX = keskix + Sin(kulma * Atn(1) / 45) * etäisyys
    viivaY = keskiy + -Cos(kulma * Atn(1) / 45) * etäisyys
    Form1.Line (keskix, keskiy)-(viivaX, viivaY), vbBlack
    'tunnit
    Form1.DrawWidth = 3 'vielä paksumpi viiva
    kulma = (360 / 12) * Hour(Now) 'sama kuin edellisessä mutta kerrotaan tunneilla
    viivaX = keskix + Sin(kulma * Atn(1) / 45) * etäisyys
    viivaY = keskiy + -Cos(kulma * Atn(1) / 45) * etäisyys
    Form1.Line (keskix, keskiy)-(viivaX, viivaY), vbBlack
    Form1.DrawWidth = 1 'takaisin ohueksi
    Form1.Circle (keskix, keskiy), etäisyys 'piirretään kellon reunat
    'kirjoitetaan numerot 6 12 9 3 kellotauluun
    Form1.CurrentX = keskix
    Form1.CurrentY = keskiy + etäisyys
    Form1.Print "6"
    Form1.CurrentX = keskix
    Form1.CurrentY = keskiy - etäisyys
    Form1.Print "12"
    Form1.CurrentX = keskix - etäisyys
    Form1.CurrentY = keskiy
    Form1.Print "9"
    Form1.CurrentX = keskix + etäisyys
    Form1.CurrentY = keskiy
    Form1.Print "3"
    'se oli siinä
End Sub

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta