Scrollen bei NICHT GUI Fenster

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Josef

Scrollen bei NICHT GUI Fenster

Beitrag 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!
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Beitrag 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
Josef

Beitrag 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.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag 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
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag 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.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag 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
Josef

Beitrag 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!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Josef,
erstmal gute Besserung! :sad4:
Was spricht denn gegen den Ansatz mit savescreen() und restscreen()?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Josef

Beitrag von Josef »

Hi Martin,

irgendwie streiken meine Gehinrzellen. Ich werd mal erst einen Gesundungsschlaf einlegen, vielleicht kann ich dann wieder denken.
Antworten