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:
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.