Kirjoittaja: tuomas
Kirjoitettu: 11.05.2004 – 11.05.2004
Tagit: koodi näytille, vinkki
Ohjelma tarvitsee toimiakseen yhden timerin (timer1) ja yhden labelin (label1).
Koodin pitäisi olla melko hyvin kommentoitua joten en ala selittelemään enempää.
EDIT:
Pääsi tässä yksi asia unohtumaan:
Tuo muuttuja joka on rivinvaihtoa toimii näin:
Text="Moi" & Wrap & "tämä teksti on seuraavalla rivillä"
Private Declare Function GetTickCount Lib "kernel32" () As Long
'Muuttuja johon scrollattava teksti tallennetaan
Dim text As String
Sub scrollaa()
Dim I As Integer, flag As Boolean
'Funktiolla Len voidaan selvittää jonkin merkkijonon pituus.
'Tässä tapauksessa jatkamme silmukkaa niin kauan kunnes koko
'teksti on scrollattu.
For I = 1 To Len(text)
'Funktio Left palauttaa merkkejä merkkijonon vasemmalta puolelta.
Label1.Caption = Left(text, I)
'päivitetään label1:ssä oleva teksti
'(Tämä kannattaa ottaa pois mikäli ohjelma alkaa vilkkua ja välkkyä liikaa.)
Label1.Refresh
'Tässä kohtaa määritetään nopeus jolla teksti scrollataan
'Mitä suurempi luku sitä hitaammin scrollataan
Nopeus (35)
Next I
Do
'Painamalla vasemmalle(nuolinäppäimellä) teksti scrollataan uudestaan
If vbKeyLeft Then flag = False
DoEvents
Loop Until flag = True
End Sub
Sub Nopeus(viive As Long)
'Muuttujat..
Dim l As Long
Dim c As Long
'
l = GetTickCount
'hallitaan scrollauden nopeutta
Do
c = GetTickCount
DoEvents
Loop Until (c - l) > viive
End Sub
Private Sub Timer1_Timer()
'Tämän muuttujan avulla voidaan vaihtaa riviä.
Dim Rivinvaihto
Rivinvaihto = Chr(10) + Chr(13)
'Määritellään scrollattava teksti ja kutsutaan scrollausta
text = "terve!": Call scrollaa
End Subkuullostaa helpolta mutta hyvältä
no tuota onhan tästäkin hyötyä ja aina tollasen koodin saa lykättyä johonkin paikkaan.
Toi taitanee välkkyä aika kätevästi, joten blittaamalla saisi hieman paremman tuloksen.
Jos välkkyy liikaa kannattaa ottaa tuo rivi:
label1.refresh pois.
Ihan hieno, saisi jäädä scrollaamaan pidemmäksikin aikaa...
Vähän saman tapainen kuin soodan tekemä :F
Ja missähän tuo soodan tekemä mahtaa olla?
Eipä löydy..
miks mulla se ei toimi 98se ja vbcce5
selvis jo
tommosen saa noppeemminkin, mut silloin se teksti välkkyy (riippuen scrollaus nopeudest)
Saa nopeammin kuin vain tarpeeksi haluaa. Tehdään tuo sama vaikka directx:llä niin alkaa pelittäää paremmin kuin hyvin.
ja kirjoituskone:
'alkumäärittelyt
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliSeconds As Long)
Private Sub Kirjoita(Optional Teksti As String)
Me.Font = "Courier New"
'fontti tasalevyiseks
If Teksti = "" Then Teksti = "Ohjelmointiputka"
'elikkä jos ei tekstiä niin määrätään kummiskin
For i = 1 To Len(Teksti)
'joka kirjain kirjoitetaan
Locate i + 1, 0
'ja kirjaimen oikealle kohdalle
Print Mid(Teksti, i, 1)
'kirjoitetaan
Sleep 300
'odotetaan 0.3 sekuntia
DoEvents
'järjestelmälle aikaa omiin prosesseihin
Next i
'seuraava rassukka
End Sub
Private Sub Locate(X As Long, Y As Long)
CurrentX = (X * TextWidth ("A"))
'currentx arvo kohdalleen
CurrentY = (Y * TextHeight ("A"))
'sama currenty:lle
End Sub