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? pois
Ihan 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.