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 ?
XbpBrowse [ERLEDIGT]
Moderator: Moderatoren
- Tom
- 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
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.
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
Tom
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse
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.
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.
- AUGE_OHR
- 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
JaBenz 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 ?
Code: Alles auswählen
// alert if hit top or bottom of browse
IF oBrowse:hitTop .OR. oBrowse:hitBottom
gruss by OHR
Jimmy
Jimmy
- Werner_Bayern
- 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
Falscher Focus. Bist Du beim 1. mal wirklich im SLE? Und beim 2. mal?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.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
-
- Rekursionen-Architekt
- Beiträge: 440
- Registriert: Mo, 30. Mai 2011 15:06
- Danksagung erhalten: 1 Mal
Re: XbpBrowse
Danke habe das jetzt mit Hilfe eurer Beiträge gelöst, nachdem ich es eine Weile liegen gelassen habe 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.
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