НА CTRL-D, как это использовать?
В этой программе, если вы выберете код товара, он отобразит 3 поля и попросит обновить, если вы обновите, он обновит записи. До этой программы было нормально.
Я добавил одно условие: если пользователь нажимает Ctrl+D, он запрашивает вопрос об удалении: да или нет, это да, то, что вы обновили, поля должны быть пустыми, иначе ничего не делать, он что-то пробовал, но я не могу этого сделать.
/*Sample Item master Maintenance Program*/
/* DISPLAY TITLE */
{us/mf/mfdtitle.i "3+ "}
def var l_qad like pt__qad13.
def var l_draw like pt_draw.
def var l_group like pt_group.
def var ans as logical no-undo.
form
pt_part colon 25
with frame a side-labels width 80.
/* SET EXTERNAL LABELS */
setFrameLabels(frame a:handle).
form
"Enter the Value of" l_qad colon 30 skip(1)
"Enter the Value of" l_draw colon 30 skip(1)
"Enter the Value of" l_group colon 30 skip(1)
with frame b side-labels width 80.
setFrameLabels(frame b:handle).
view frame a.
repeat with frame a:
prompt-for pt_part
editing:
/* FIND NEXT/PREVIOUS RECORD */
{us/mf/mfnp.i pt_mstr pt_part "pt_mstr.pt_domain = global_domain and pt_part" pt_part pt_part pt_part }
if recno <> ? then
do:
display pt_part.
end.
end.
for first pt_mstr exclusive-lock where pt_domain = global_domain and pt_part = input pt_part:
assign l_qad= pt__qad13
l_draw= pt_draw
l_group= pt_group.
disp l_qad l_draw l_group with frame b.
update l_qad l_draw l_group with frame b.
assign pt__qad13 = input l_qad
pt_draw = input l_draw
pt_group = input l_group.
end.
hide frame b.
on CTRL-D ANYWHERE
do:
message "Please confirm delete" view-as alert-box question buttons yes-no update ans as logical.
if ans= true then
message "yes".
assign pt__qad13 = ""
pt_draw = ""
pt_group = "".
else
message "no".
end.
end.
1 ответ
Ваш триггер должен быть размещен ранее в вашем коде.
Посмотрите на этот базовый пример, вы можете попробовать закомментировать / раскомментировать два триггера, чтобы увидеть, что происходит:
DEFINE VARIABLE cUpdate AS CHARACTER NO-UNDO.
/* Placing the trigger here works! */
ON 'ctrl-d':U ANYWHERE DO:
MESSAGE "You rang sir?" VIEW-AS ALERT-BOX INFORMATION TITLE "Early trigger".
RETURN.
END.
UPDATE cUpdate.
/* Placing the trigger here wont work! */
/*
ON 'ctrl-d':U ANYWHERE DO:
MESSAGE "You rang sir?" VIEW-AS ALERT-BOX INFORMATION TITLE "Late trigger".
RETURN.
END.
*/
Progress передает код только один раз при компиляции. Таким образом, он никогда не узнает о чем-либо "впереди" того, где вы сейчас находитесь (с ФУНКЦИЯМИ, объявленными FORWARD, как исключение).