2016-05-20 2 views
1

В этой программе, если вы выберете код товара, он отобразит 3 поля и запросит обновление, если вы обновите его, обновите записи. До этой программы было хорошо.ON CTRL-D Как его использовать?

Я добавил одно условие, если пользователь нажмет 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. 
*/ 

Прогресса проходит только один раз кода при компиляции. Таким образом, он никогда не узнает ни о чем «впереди» того, где вы находитесь (с FUNCTIONS, объявленным FORWARD исключением).

Смежные вопросы