Yksinkertainen lista, jota voi skrollata, jos kaikki rivit eivät mahdu näytölle. Koodin alusta voi muuttaa listan ominaisuuksia, esim. SelMode-muuttujalla, näkyykö valittu kohta taustan korostuksella vai osoitetaanko siihen nuolella. Suunnittelin tämän alunperin Greyn projektiin, jossa olen ollut mukana jonkin verran.
DIM TList(1 TO 100) AS STRING
DIM LC AS INTEGER, DI AS INTEGER
DIM LSel AS INTEGER, Scr AS INTEGER
DIM LTop AS INTEGER, LLeft AS INTEGER
DIM i AS INTEGER
LC = 50 'kuinka monta rivi?
DI = 16 'kuinka monta rivi? n?ytet??n kerralla
LSel = 1 'ensimm?inen valittu
Scr = 0 'vieritys on ylh??ll?
LTop = 4 'listan paikka
LLeft = 20 '.............
SelMode = 1 'valitun n?ytt?minen (1=highlight 2=nuoli)
CLS
'Arvotaan listaan satunnaista teksti?, t?m?n voi korvata omalla koodilla
DIM i2 AS INTEGER, Temp AS INTEGER
FOR i = 1 TO LC
TList(i) = STR$(i) + ". "
Temp = INT(RND * 15) + 5
FOR i2 = 1 TO Temp
TList(i) = TList(i) + CHR$(97 + INT(RND * 22))
NEXT i2
NEXT i
'Listan n?ytt?minen
DO
LOCATE 2, 28: PRINT LSel + Scr
LOCATE LTop + 1 'Tulostetaan kaikki n?kyvill? olevat
FOR i = 1 TO DI
LOCATE , LLeft
PRINT TList(i + Scr) + SPACE$(25 - LEN(TList(i + Scr)))
NEXT i
'N?ytet??n korostus tai nuoli
IF SelMode = 1 THEN LOCATE LSel + LTop, LLeft: COLOR , 4: PRINT TList(LSel + Scr): COLOR , 0
IF SelMode = 2 THEN LOCATE LSel + LTop, 22 + LLeft: PRINT "<--"
DO: a$ = INKEY$: LOOP UNTIL a$ <> "" 'odotetaan n?pp?int?
IF SelMode = 2 THEN LOCATE LSel + LTop, 22 + LLeft: PRINT " "'kumitetaan nuoli
IF a$ = CHR$(0) + "P" THEN LSel = LSel + 1 'siirret??n valintaa alas
IF a$ = CHR$(0) + "H" THEN LSel = LSel - 1 '................... yl?s
IF LSel > LC THEN LSel = LC 'ei menn? yli rivien m??r?n
IF LSel > DI THEN 'jos menn? yli alareunan
LSel = DI 'pidet??n valinta alhaalla, mutta
IF LSel + Scr < LC THEN Scr = Scr + 1 'skrollataan alasp?in
END IF
IF LSel = 0 THEN 'jos menn? yli yl?reunan
LSel = 1 'pidet??n valinta ylh??ll?, mutta
IF Scr > 0 THEN Scr = Scr - 1 'skrollataan yl?sp?in
END IF
LOOP UNTIL a$ = CHR$(27) 'Escist? poisIhan hieno.
Bugittaa...
Fisher kirjoitti:
Bugittaa...
Ja mitähän asialle pitäisi tehdä? :)
Miten se bugittaa? Sääditkö asetukset pieleen tai jotain?
BINÄÄRIIIii
http://koodaa.mine.nu/~vohveli/LISTA.EXE
Siinä on sulle BINÄÄRIIIii. Et tosin näe tuosta muuta kuin, että se toimii. Ainakin mulla toimii.
Edit: Miksi kummassa muuten poistit sen toisen kommenttisi? ;)
Ihan hieno, kun olen kaiken muun hyvän lisäksi tarvinnut tuollaista.
Aihe on jo aika vanha, joten et voi enää vastata siihen.