[GELĂ–ST] Beeinflussung der Cursor-Position in Pages

Bild Microsoft Dynamics NAV 2009 (aka "NAV 6")
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie

Bitte unbedingt angeben, ob sich eure Frage auf den RoleTailored-Client (RTC) oder den Classic-Client (CC) bezieht!

[GELĂ–ST] Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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
Frage.JPG (20.31 KiB) 1777-mal betrachtet

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
Zuletzt geändert von BlueInTheSky am 29. Oktober 2014 16:13, insgesamt 1-mal geändert.
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon Natalie » 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?
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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 ?
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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.
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon Natalie » 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.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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 ...
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon Natalie » 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?
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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.
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon Natalie » 28. Oktober 2014 16:25

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

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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.
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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 ...
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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
Dateianhänge
Page 90000 Item Search TEST.txt
(5.28 KiB) 11-mal heruntergeladen
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

Re: Beeinflussung der Cursor-Position in Pages

Beitragvon BlueInTheSky » 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
Dateianhänge
Page 90000 Item Search TEST.txt
(5.07 KiB) 14-mal heruntergeladen
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

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

Beitragvon Natalie » 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 ...?
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

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

Beitragvon BlueInTheSky » 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
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11

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

Beitragvon BlueInTheSky » 31. Oktober 2014 15:26

Besser klappt es wenn man es noch etwas erweitert:

FastSearchFilterG-OnValidate_6.JPG


GrĂĽĂźe, Blue
BlueInTheSky
Microsoft Partner
Microsoft Partner
 
Beiträge: 163
Registriert: 14. März 2007 11:11


ZurĂĽck zu NAV 2009

Wer ist online?

Mitglieder in diesem Forum: Yandex [Bot] und 1 Gast