XbpBrowse [ERLEDIGT]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

XbpBrowse [ERLEDIGT]

Beitrag von Benz »

Hi, aus der Suche werde ich leider nicht ganz schlau.
Und zwar würde ich gerne, wenn ich einem SLE bin und Pfeil nach unten oder oben drücke in einem Browse einen Datensatz nach unten oder oben springen.
Ich löse das mit oSLE:keyboard := {|nkey, ... | proc_key(nkey,...) ... }

Ich frage dann in der Procedure proc_key die beiden Pfeiltasten ab und will dann im Browse nach unten oder oben gehen.
Wenn ich das mit up() oder down() mache, dann sehe ich die Markierung nicht und das Browse schreibt nach dem letzten Eintrag, wenn ich Pfeil nach unten drücke, einfach weitere Einträge hinten dran.

Gibts eine Möglichkeit die Markierung im Browse bei up und down mitlaufen zu lassen und abzufangen, wann ich am Ende angekommen bin ?
Zuletzt geändert von Benz am Mo, 18. Mai 2015 16:44, insgesamt 1-mal geändert.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: XbpBrowse

Beitrag von Tom »

Hallo, Benz.

Häng mal jeweils ein oBrowse:ForceStable() ran, jeweils hinter das oBrowse:Up() oder oBrowse:Down().

Vermutlich hast Du ein Edit-Browse realisiert, so dass es implizit richtig wäre, einen Datensatz anzuhängen. Ob ein Browse am Ende angekommen ist, verrät die Datenquelle - im einfachsten Fall dadurch, dass Du vor dem Up/Down prüfst, ob Du bereits auf dem ersten oder letzten Datensatz stehst (beide solltest Du in aller Regel kennen). Bei Arrays wäre es dann der jeweilige Pointer bezogen auf die Länge des Arrays. Du kannst aber auch in den Navigationscodeblöcken des Browses einfach entsprechende Zeiger (iVars) setzen.
Herzlich,
Tom
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse

Beitrag von Benz »

ForceStable habe ich schon versucht. Dann geht der Zeiger eins nach unten bzw. wieder eins nach oben (inkl. Markierung), aber mehr als ein Datensatz geht nicht.
Also wenn ich auf dem ersten bin und 2 mal Pfeil nach unten drücke, dann komme ich mit dem ersten Drücken auf Datensatz 2 und mit dem 2. Drücken bleibe ich auf Datensatz 2. Er springt also nicht mehr auf Datensatz 3.
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

Re: XbpBrowse

Beitrag von AUGE_OHR »

Benz hat geschrieben:Gibts eine Möglichkeit die Markierung im Browse bei up und down mitlaufen zu lassen und abzufangen, wann ich am Ende angekommen bin ?
Ja

Code: Alles auswählen

         // alert if hit top or bottom of browse
         IF oBrowse:hitTop .OR. oBrowse:hitBottom
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: XbpBrowse

Beitrag von Werner_Bayern »

Benz hat geschrieben:Also wenn ich auf dem ersten bin und 2 mal Pfeil nach unten drücke, dann komme ich mit dem ersten Drücken auf Datensatz 2 und mit dem 2. Drücken bleibe ich auf Datensatz 2. Er springt also nicht mehr auf Datensatz 3.
Falscher Focus. Bist Du beim 1. mal wirklich im SLE? Und beim 2. mal?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: XbpBrowse

Beitrag von Benz »

Danke habe das jetzt mit Hilfe eurer Beiträge gelöst, nachdem ich es eine Weile liegen gelassen habe :-D Hier die Lösung:

Ich fange mit dem Ereignis keyboard Tastendruck im SLE ab und kann dadurch die Tasten nach oben und unten abfangen (65574 und 65576).
Dann gebe ich dem Browse den Focus und gehe abhängig von der gedrückten Taste um eins nach oben bzw. um eins nach unten.
Anschließend gebe ich dem SLE wieder den Focus, damit der Benutzer weiter Eingaben machen kann.

Code: Alles auswählen

PROCEDURE proc_browse_tasten(oBrowse,memkeycode,oSLE)

   SetAppFocus(oBrowse)

   IF memkeycode == 65574

      oBrowse:up()
      oBrowse:forceStable()

   ELSEIF memkeycode == 65576

      oBrowse:down()
      oBrowse:forceStable()

   ENDIF

   SetAppFocus(oSLE)

RETURN
Antworten