|
Dan/Torbjörn, >I see that the Enter key has a value of hex 'F1'. I've never used Field+ to >return control back to the program on the AS/400, but I see there's a >reference to something called AutoEnterSLP, which has a value of hex '3F'. This won't help. A field with CHECK(ER) when exited (causing an Auto Enter) will still have an AID byte value of x'F1', just like a normal Enter key. You can't tell the difference between the two. The AutoEnterSLP is for the Selector Light Pen on the old 5251-12's or equivalent. >> I sometimes use Auto Advance on several >> fields on the same display file record. >> This makes it possible to act on the data >> in a more direct and modern style. The basic problem here is that the design of 5250 data stream devices is for a block-mode interface. With the current WS controllers it is basically impossible to act on screens at a field or keystroke level in an efficient manner. Using CHECK(ER) on every field may seem like it gets closer, but won't keep users from doing things like partially filling a field and pressing Tab or whatever. >> To be able to decide if the user pressed >> Enter or Field+, I read the cursor position >> and check if fields are changed. >> However, sometimes it it not possible >> to se the difference. You could consider using the CHANGE() keyword to set on indicator when the Modified Data Tag (MDT) bit has been set by the controller. This will tell you the user did something in the field, even if the field ended up with the exact same data contents. Put a different indicator on every field (yuck!) and if only one is on, that is the field they changed (regardless of where the cursor is). It is still very possible for multiple fields to have the CHANGE() indicator set, even when every field also has CHECK(ER). For example, you can use Tab, New Line, or the cursor keys to navigate to multiple fields prior to the CHECK(ER) taking effect. >> Does someone know of a more direct >> way to get the information of which key >> the user pressed? The AID byte in the INFDS will tell you if a Fx or other function key was pressed instead of Enter or Check(ER). It will *not* distinguish between an explicit Enter and an implicit Enter caused by Check(ER). As mentioned above, using CHANGE() indicators can help determine what field(s) a user typed in (if any), if that is what you are after. Trying to force a block-mode interface to act as if a character-mode interface is not advisable IMHO. Just my .02, Doug +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.