PxPlus User Forum
Main Board => Discussions => Programming => Topic started by: Jeffrey Ferreira on January 20, 2020, 02:26:49 PM
-
I'm trying to write a small generic dialogue screen that i can use for quick generic inputs [like enter qty]
on the obtain i was trying to do
i wanted to do something like
repeat
obtain(0);mode$=hta(eom)
until mode$=$0D$
i kept getting more data in my mode$ instead of $0D$
20500 ! ^1000
20510 GENERIC_INPUT:
20530 enter (PANEL_TITLE$),(PROMPT$),RETURN_VALUE$,err=*next
20540 let RETURN_VALUE$=""
20550 let PANEL_WIDTH=34
20560 let PANEL_HEIGHT=20
20570 let MULTI_LINE_WIDTH=32
20580 let MULTI_LINE_HEIGHT=1
20590 let MULTI_LINE_Y_POSITION=10
20600 call "CAIREPOS;PRINT_CENTERED_DIALOGUE",PANEL_WIDTH,PANEL_HEIGHT,(PANEL_TITLE$)
20610 print 'caption'(PANEL_TITLE$),
20620 print 'text'(@x(1),@y(3),@x(32),@y(8),PROMPT$,"W")
20630 let MULTI_LINE_CTL=100
20640 multi_line MULTI_LINE_CTL,@(1,MULTI_LINE_Y_POSITION,MULTI_LINE_WIDTH,MULTI_LINE_HEIGHT),fnt="*",opt="X"
20650 if not(nul(PANEL_TITLE$)) then let COLUMN_HEADING$=PANEL_TITLE$
20660 set_focus MULTI_LINE_CTL
20680 let RETURN_VALUE$=""
20690 let MODE$=""
20700 obtain (0)NIU$
20720 multi_line read MULTI_LINE_CTL,RETURN_VALUE$,MODE$
20760 print (0,err=*next)'pop',
20990 exit
-
Since you are setting mode$ to the HTA() of eom your check in the until should be
UNTIL mode$="0D"
instead of comparing to $0D$
-
Hi Keith,
when I do
mode$=hta(eom)
if i stop and print it the value of
mode$ is 00800064
jeff
-
Try checking the MODE variable on the MULTI_LINE directive instead.
-
The EOM system variable contains the character/event signal that terminated that last OBTAIN.
The EOM you are seeing (0x00800064) indicates a CTL code 100 (Hex 64 is decimal 100, and the preamble of $0080$ indicates the CTL value follows).
So the OBTAIN was terminated by control 100 firing an on change event.
To see why the Multi-line signaled the on change event you need to test the EOM value (mode$) returned in the Multi_line read.