[GELÖST] Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 13:49

Hallo Zusammen,

programmiere gerade an einer Page, die ein Feld mit einer globalen Variablen "Schnell-Suche" enthält, in welcher man über eine definierte Syntax zahlreiche Filterkriterien in einem eingeben kann.

Schnellsuche.JPG


Nach Eingabe und ENTER des "Schnell-Suche"-Feldes werden die Filter entsprechend gesetzt.

Grundsätzlich funktioniert dies. Allerdings möchte ich gerne, dass nach jeder "Schnell-Suche" der Cursor auf der ersten gefundenen Position steht.
Dies ist leider nicht immer der Fall.
Folgendes habe ich getestet:

1. Versuch über FINDFIRST

Nach dem Filtern habe ich folgende Programmzeile ergänzt:
erster Versuch über FINDFIRST.JPG

Leider kommt beim Ausführen der Schnellsuche dann folgende Frage:
Frage.JPG

Bestätige ich mit Nein, so wird die Schnellsuche ausgeführt.
Bestätige ich mit Ja, so kommt eine solche Meldung:
FM.JPG

Irgendwie hat dieses Verhalten mit der Position des Cursors beim Ausführen der Schnellsuche zu tun, denn wenn ich das "Schnell-Suche"-Feld ein zweites Mal ändere und ausführe kommt die Meldung nicht.
Die Meldung kommt anscheinend nur, wenn der Cursor auf einem bestimmten Datensatz steht. Wenn der Cursor wiederum auf einem bestimmten Datensatz steht, so ändert das FINDFIRST nichts daran, dass der Cursor nach der Schnellsuche immer noch auf diesem Datensatz steht.

2. Versuch über WSHSHELL

Nachdem der erste Versuch über FINDFIRST nicht das gewünschte Ergebnis brachte habe ich es über das codeseitige Ausführen der Tastenkombination Ctrl+Alt+Pos1 (Springen auf ersten Datensatz) versucht:
zweiter Versuch über WSHSHELL.JPG

(WshShell ist Variable vom Typ Automation: 'Windows Script Host Object Model'.WshShell')

Leider funktioniert auch dies nicht.
Auch hier scheint das Verhalten mit der Position des Cursors beim Ausführen der Schnellsuche zu tun, denn wird der wshshell-Befehl ausgeführt wenn der Cursor auf einem konkreten Datensatz steht, funktioniert er, wird er ausgeführt, wenn der Cursor auf dem Schnell-Suche-Feld steht wir er nicht ausgeführt.

Meine Frage nun, wie kann man in NAV2009-Pages die Position des Cursors über C/AL-Code beeinflussen ? Und dies ohne auf obige Probleme zu stossen ?

Vielen Dank für Eure Unterstützung !

Grüße, Blue
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von BlueInTheSky am 29. Oktober 2014 16:13, insgesamt 1-mal geändert.

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 14:19

1. Versuch über FINDFIRST
Was passiert, wenn du das CurrPage.UPDATE weglässt?
Falls der Filter ohne das CurrPage.UPDATE überhaupt nicht angewendet wird: Was ist, wenn du es trotzdem weglässt, und anschließend mit F5 die Seite neu lädst? Kommt dann noch immer eine Fehlermeldung?

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 14:58

Hallo Natalie,

wenn ich den Code wie folgt ändere

FastSearchFilterG-OnValidate_3.JPG


kommt zwar keine Frage/Meldung mehr, aber ab dem 2ten Auslösen springt der Cursor nicht mehr auf den ersten Datensatz.

Das gleiche passiert auch wenn ich den Code wie folgt ändere:

FastSearchFilterG-OnValidate_4.JPG


Der Cursor scheint sich zu merken an welcher Position er zuletzt war und bleibt auf diesem Datensatz stehen, sofern dieser Datensatz nach der Schnellsuche noch in der Ergebnisliste ist.
Leider ist dieser Datensatz selten der erste Datensatz der Ergebnisliste.

Blue
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 15:03

Eine weite Frage in diesem Zusammenhang:

Kann man den Cursor per C/AL-Code irgendwie von dem Feld "Schnell-Suche" wegkriegen, auf dem er zwangsläufig steht, wenn ich die "Schnell-Suche" ausführe ?

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 15:11

Hintergrund:

Ich habe folgenden Code einmal in eine Test-Funktion kopiert:
IF ISCLEAR(WshShell) THEN
CREATE(WshShell,FALSE,TRUE);
WshShell.SendKeys('^%{HOME}');//Ctrl+Alt+Pos1

Ergebnis:
Wenn der Cursor auf dem "Schnell-Suche"-Feld (globale Variable) steht springt er nicht auf den ersten Datensatz.
Wenn der Cursor auf einem beliebigen Datensatz steht, dann springt er durch die Test-Funktion auf den ersten Datensatz.

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 16:05

Das war leider überhaupt nicht das, was ich gefragt habe ;-)

Zunächst einmal geht es mir um deinen Ansatz über FINDFIRST statt SendKeys.
Wenn das allein (ohne CurrPage.UPDATE) nicht reicht, dann bitte nach FINDFIRST manuell F5 in der Page ausführen.
Erst wenn irgendwas davon vorher funktioniert hat, würde ich ggf. mit SendKeys eingreifen.

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 16:09

Natalie hat geschrieben:Das war leider überhaupt nicht das, was ich gefragt habe ;-)

Zunächst einmal geht es mir um deinen Ansatz über FINDFIRST statt SendKeys.
Wenn das allein (ohne CurrPage.UPDATE) nicht reicht, dann bitte nach FINDFIRST manuell F5 in der Page ausführen.
Erst wenn irgendwas davon vorher funktioniert hat, würde ich ggf. mit SendKeys eingreifen.



ok, Natalie, hätte ich wohl dazu sagen sollen: Auch das manuelle Ausführen von F5 nach dem FINDFIRST hatte nichts gebracht ...

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 16:14

BlueInTheSky hat geschrieben: Auch das manuelle Ausführen von F5 nach dem FINDFIRST hatte nichts gebracht ...

Schade :-P
Sind in deiner Page die Trigger OnFindRecord und OnNextRecord ausprogrammiert?

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 16:18

Natalie hat geschrieben:Sind in deiner Page die Trigger OnFindRecord und OnNextRecord ausprogrammiert?


--> Nein, OnFindRecord und OnNextRecord-Trigger sind leer.

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 16:25

Macht es einen Unterschied, ob du CurrPage.UPDATE oder CurrPage.UPDATE(FALSE) benutzt?

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 16:30

Natalie hat geschrieben:Macht es einen Unterschied, ob du CurrPage.UPDATE oder CurrPage.UPDATE(FALSE) benutzt?


--> Nein, macht keinen Unterschied.

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 16:42

BlueInTheSky hat geschrieben:Hintergrund:

Ich habe folgenden Code einmal in eine Test-Funktion kopiert:
IF ISCLEAR(WshShell) THEN
CREATE(WshShell,FALSE,TRUE);
WshShell.SendKeys('^%{HOME}');//Ctrl+Alt+Pos1

Ergebnis:
Wenn der Cursor auf dem "Schnell-Suche"-Feld (globale Variable) steht springt er nicht auf den ersten Datensatz.
Wenn der Cursor auf einem beliebigen Datensatz steht, dann springt er durch die Test-Funktion auf den ersten Datensatz.


Nochmal zur Ergänzung:
PageLayout.JPG

Wenn der Cursor auf dem Schnellsuch-Filter-Field steht so funktioniert auch die Tastenkombination "Ctrl+Alt+Pos1" NICHT.
Steht der Cursor im unteren Bereich (unter REPEATER), dann funktioniert die Tastenkombination "Ctrl+Alt+Pos1" zum Springen auf den ersten Datensatz.

Hmmm ...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Beeinflussung der Cursor-Position in Pages

28. Oktober 2014 18:10

Hallo Zusammen,

anbei eine kleine Beispiel-Page (Page 90000 "Item Search TEST"), an der ihr den Effekt sehen könnt, wenn ihr im Schnell-Such-Feld zunächst 2000 eingebt und Enter drückt und danach 1000 eingebt und Enter drückt.
Dies setzt dann testhalber einfach ein SETFILTER("No.",'>%1',FastSearchFilterP).

Der Scollbalken steht dann nach der 2ten Suche trotz FINDFIRST etc. nicht oben und der Cursor steht immer noch auf dem Datensatz, auf dem er nach der ersten Suche stand.

Vielen Dank für Eure Unterstützung ! Bin für jeden Hinweis dankbar.

Grüße, Blue
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Beeinflussung der Cursor-Position in Pages

29. Oktober 2014 16:12

Hallo Zusammen,

habe nun eine Lösung gefunden :-).

Wenn ich den Code im OnValidate-Trigger wie folgt ändere
FastSearchFilterG-OnValidate_5.JPG

funktioniert es und er springt nach der "Schnell-Suche" auf den ersten gefundenen Datensatz.

Das Problem lag also daran, dass man den Cursor zuerst mit dem codeseitigen Ausführen der Tab-Taste vom Schnell-Such-Feld wegbekommen musste.

Anbei zur Vollstädigkeit noch das kleine Testbeispiel in der funktionierenden Variante.

Vielen Dank an Natalie für ihre Hinweise !

Viele Grüße,
Blue
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [GELÖST] Beeinflussung der Cursor-Position in Pages

29. Oktober 2014 16:42

Sorry, ich konnte mir deine Page nicht früher ansehen.
Zu der anfänglichen Rückfrage, ob der Datensatz umbenannt werden soll: Das lag einzig und allein daran, dass du in der Funktion ApplyFastSearchFilterTEST erst FINDFIRST durchführst, und DANACH den Filter setzt - wenig sinnvoll ;-)

Behebt man das, aktualisiert sich die Anzeige auch ohne jedes CurrPage.UPDATE und ohne jedes SendKeys.
Das einzige Problem, das trotzdem bleibt: Solange ich ins Eingabefeld eine immer größere Nummer eingebe, funktioniert alles. Sobald ich wieder kleiner werde, wird der Filter zwar korrekt angewendet, aber der Cursor verbleibt auf der letzten Position anstatt auf den ersten Datensatz des neuen Bereichs zurückzuspringen: Der Cursor schafft es einfach nicht, rückwärts zu laufen.

Da gibt es doch bestimmt eine einfache Lösung zu (ohne Sendkeys), und ich finde die nur nicht ...?

Re: [GELÖST] Beeinflussung der Cursor-Position in Pages

29. Oktober 2014 17:04

Natalie hat geschrieben:Das einzige Problem, das trotzdem bleibt: Solange ich ins Eingabefeld eine immer größere Nummer eingebe, funktioniert alles. Sobald ich wieder kleiner werde, wird der Filter zwar korrekt angewendet, aber der Cursor verbleibt auf der letzten Position anstatt auf den ersten Datensatz des neuen Bereichs zurückzuspringen: Der Cursor schafft es einfach nicht, rückwärts zu laufen.

--> immerhin ist dieses Problem hiermit durch das vorherige Ausführen der TAB-Taste behoben:
FastSearchFilterG-OnValidate_5.JPG


Danke!
Grüße, Blue
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [GELÖST] Beeinflussung der Cursor-Position in Pages

31. Oktober 2014 15:26

Besser klappt es wenn man es noch etwas erweitert:

FastSearchFilterG-OnValidate_6.JPG


Grüße, Blue
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.