Beiträge von Korodny im Thema „Text Highlighting unter BasicV2“

    Aber dann würde er ja immer ALLE Einträge neu PRINTen, das stelle ich mir bei einem kompletten Bildschirm schwierig vor :gruebel

    Nein. Das Prinzip ist, einen Eintrag - den bisher aktivierten - nochmal, nicht-invertiert darzustellen und einen weiteren - den ab jetzt aktivierten - nochmal invertiert anzuzeigen - also zwei PRINT-Statements.

    Hier mal ein BASIC-Unterprogramm für vertikale Menüs, dass ich in den Achtzigern geschrieben habe. Kurzes überfliegen sagt mir:

    1. gewünschte Position des Menüs in den Variablen X/Y ablegen, Anzahl der Menü-Einträge in UH, die Menü-Einträge selbst in AA$(1) bis AA$(UH).
    2. mit GOSUB 40 aufrufen. Menü wird Cursor-Tasten und Return bedient, STOP (oder CONTROL+C, wenn STOP nicht per POKE unschädlich gemacht wurde) bricht das Menü ab.
    3. Nach Aufruf des Menüs steht die Nummer des ausgewählten Menüpunkts in der Variable B. Ist diese Variable 0, wurde das Menü abgebrochen.
    4. Sonstige vom Unterprogramm (intern) benutzte Variablen: RR$, A$. Irgendwo im Programm sollte man natürlich noch AA$() auf die maximal mögliche Anzahl von Menü-Einträgen DIMensionieren.

    Der von dir gewünschte Ansatz "über den Bildschirmspeicher" wird niemals schnell genug arbeiten.

    Code
    40 poke214,y:fora=1touh:poke211,x:sys58640:printaa$(a):next
    41 b=1:rr$="{rvon}":gosub47
    42 poke198,0:wait198,1:geta$:ifa$="{stop}"thenb=0:return
    43 ifa$=chr$(13)thenreturn
    44 ifa$="{down}"thenrr$="":gosub47:b=b+1+(b=uh)*uh:rr$="{rvon}":gosub47:goto42
    45 ifa$="{up}"thenrr$="":gosub47:b=b-1-(b=1)*uh:rr$="{rvon}":gosub47:goto42
    46 goto42
    47 poke211,x:poke214,y+b-1:sys58640:printrr$;aa$(b):return