Kirjautuminen

Haku

Tehtävät

Koodit: VB6: Scrollaava teksti

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

Kommentit

sami kauppinen [13.05.2004 20:02:06]

#

kuullostaa helpolta mutta hyvältä

mamaze [13.05.2004 21:01:39]

#

no tuota onhan tästäkin hyötyä ja aina tollasen koodin saa lykättyä johonkin paikkaan.

kaviaari [14.05.2004 08:16:25]

#

Toi taitanee välkkyä aika kätevästi, joten blittaamalla saisi hieman paremman tuloksen.

tuomas [14.05.2004 08:23:35]

#

Jos välkkyy liikaa kannattaa ottaa tuo rivi:
label1.refresh pois.

sooda [14.05.2004 09:54:21]

#

Ihan hieno, saisi jäädä scrollaamaan pidemmäksikin aikaa...

efteri [15.05.2004 11:20:24]

#

Vähän saman tapainen kuin soodan tekemä :F

tuomas [15.05.2004 11:23:48]

#

Ja missähän tuo soodan tekemä mahtaa olla?
Eipä löydy..

efteri [20.05.2004 15:12:04]

#

No tässä se on https://www.ohjelmointiputka.net/koodivinkit/24275-vb6-ittelles-elämä

pipopää [27.06.2004 16:21:37]

#

miks mulla se ei toimi 98se ja vbcce5
selvis jo

Feel Free [17.12.2004 15:19:27]

#

tommosen saa noppeemminkin, mut silloin se teksti välkkyy (riippuen scrollaus nopeudest)

tuomas [04.01.2005 12:11:42]

#

Saa nopeammin kuin vain tarpeeksi haluaa. Tehdään tuo sama vaikka directx:llä niin alkaa pelittäää paremmin kuin hyvin.

moptim [04.11.2006 07:50:09]

#

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

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta