Seite 1 von 1
Scrollen bei NICHT GUI Fenster
Verfasst: Di, 13. Mär 2007 16:00
von Josef
Ich hab meine Applikation noch nicht komplett auf GUI umgestellt und habe eine Frage:
Kann man bei einem NICHT GUI Fenster auch nach unten und oben scrollen bzw. "umblättern"?
Irgendwo hab ich mal gelesen, dass dies irgendwo geht aber ich weiß nicht mehr wie!
Verfasst: Di, 13. Mär 2007 17:25
von Rolf
Hi Josef
meinst du etwa sowas wie dbEdit() wo man mit Bild-Up oder Bild-Down Seitenweise und mit den Pfeiltasten zeilenweise Datenbanken durchblättern kann?
Oder schon mit der Maus?
Grüße Rolf
Verfasst: Mi, 14. Mär 2007 20:22
von Josef
Ich meine eigentlich ein ganz normales gutes altes DOS Fenster.
Es werden hier Sitzplätze für Konzerte angezeigt und jetzt hab bei einigen Konzerten mehr Plätze wie mein DOS Fenster anzeigt. Ich kann´s auch nicht größer machen, weil der Kunde eine "Blindenauflösung" von max. 1024x768 hat.
Mit der Maus geht da normalerweise nix, ich müßte mit PageDown usw. arbeiten.
Verfasst: Mi, 14. Mär 2007 20:41
von Martin Altmann
Hallo Josef,
warum nicht einfach mit savescreen() und restscreen() arbeiten?
Bild runter -> savescreen in variable fenster1, fenster neu aufbauen.
Bild hoch -> savescreen in variable fenster2, restscreen von fenster1.
Wenn zwei Fenster nicht reichen, entsprechend mehr - und vielleicht in ein Array, statt in einzelne Variablen ablegen (Länge des Arrays = Anzahl benötigter Fenster).
Viele Grüße,
Martin
Verfasst: Mi, 14. Mär 2007 22:44
von brandelh
Oder wenn du Zeilenweise scrollen willst einfach die
Inkeywerte von Cursor auf und ab abfragen und eine offsetvariable erhöhen oder senken. Danach alles anzeigen...
Code: Alles auswählen
local aInhalt := { { "Test","Test2 ,....},;
{ "Test","Test2 ,....},;
... }
local x, nOffset := 0, nRow
do while .t.
x := 1 + nOffset
for nRow := 4 to 24
@nRow,1 say aInhalt[x,...]
x++
next
do while .t.
Inkey(0)
do case
case lastkey() = K_ESC
exit
case lastkey() = cursor hoch // in inkey.ch nachsehen
nOffset := max(nOffset-1,0)
exit
case lastkey() = cursor runter
nOffset := min(nOffset++,len(aInhalt)-1)
exit
...
endcase
enddo
if lastkey() = K_ESC
exit
endif
enddo
...
ist halt langsamer als die Lösung von Martin.
Verfasst: Do, 15. Mär 2007 1:32
von AUGE_OHR
hi,
Frage : welche Cl*pper "Auflösung" hast du den jetzt ?
25x80 oder 50x80 ?
wenn 50 Zeilen nicht ausreichen, wie wäre es 90 Grad "drehen"
dann könnte man ja sowas wie 50x132 "quer" nehmen.
Code: Alles auswählen
LOCAL DEF_ROWS := 50
LOCAL DEF_COLS := 132
...
oCrt := XbpCrt():new(oParent ,,aPos , DEF_ROWS, DEF_COLS )
gruss by OHR
Jimmy
Verfasst: So, 18. Mär 2007 18:06
von Josef
Hallo Martin, Hubert, Jimmy
leider kann ich erst jetzt wieder chatten, weil die "Stirnhöhle" die böse hat mich niedergelegt.
Meine Fenstergröße= 43, 87
höher geht nicht, weil Kunde keine bessere Auflösung will
Ich brauch Platz für 999 Plätze, der erste Bildschirm zeigt bis 820 an, den Rest möcht ich mit z.B. Bild abwärts anzeigen lassen und mit Bild aufwärts wieder den oberen Bereich.
Wie schön erwähnt, ich hatte schon mal sowas geschrieben und finde es nicht mehr!
Verfasst: So, 18. Mär 2007 18:20
von Martin Altmann
Hallo Josef,
erstmal gute Besserung!
![sad4 :sad4:](./images/smilies/sad4.gif)
Was spricht denn gegen den Ansatz mit savescreen() und restscreen()?
Viele Grüße,
Martin
Verfasst: Mo, 19. Mär 2007 10:38
von Josef
Hi Martin,
irgendwie streiken meine Gehinrzellen. Ich werd mal erst einen Gesundungsschlaf einlegen, vielleicht kann ich dann wieder denken.