Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Skrollattava lista

hunajavohveli [31.10.2004 11:16:45]

#

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

herkko [02.11.2004 17:15:38]

#

Ihan hieno.

Fisher [09.11.2004 18:41:36]

#

Bugittaa...

hunajavohveli [09.11.2004 20:22:01]

#

Fisher kirjoitti:

Bugittaa...

Ja mitähän asialle pitäisi tehdä? :)
Miten se bugittaa? Sääditkö asetukset pieleen tai jotain?

BlueByte [11.11.2004 20:06:42]

#

BINÄÄRIIIii

hunajavohveli [11.11.2004 21:32:47]

#

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? ;)

Wukkopi [16.11.2004 08:46:06]

#

Ihan hieno, kun olen kaiken muun hyvän lisäksi tarvinnut tuollaista.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta