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 Sub
kuullostaa 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