按下按钮后触发 Oracle 表单

Oracle forms trigger after pressing a button

我创建了一个文本框和一个按钮。我想要发生的是按下按钮后文本框为空,焦点必须回到文本框上。

BEGIN       
   IF :blk.textbox IS NULL THEN
        msg_alert('Error message', 'E', FALSE);
   end if;    
END; 

我已经尝试将上面的代码放入 WHEN-BUTTON-PRESSED 触发器中,但没有任何反应。

将您的代码放入 :BLK.TEXTBOX 项的 WHEN-VALIDATE-ITEM 触发器中。

BEGIN       
    IF :blk.textbox IS NULL THEN
        msg_alert('Error message', 'E', FALSE);

        --if msg_alert procedure has no RAISE FORM_TRIGGER_FAILURE, then uncomment next line
        -- RAISE FORM_TRIGGER_FAILURE;
   end if;    

END; 

您还可以将按钮的 MOUSE NAVIGATE 属性 设置为 FALSE(或 NO),这样单击按钮后焦点就不会转到该按钮。

还使用 GO_ITEM 将焦点设置到文本项。样本,

GO_ITEM('blk.textbox');

为什么要重新发明轮子?将文本项的 REQUIRED 属性 设置为 YES.

在阅读了您为@eifla001 的回答留下的评论后,我不确定您的代码是什么。这样的东西在我的 Forms 10g 上正常工作(但应该在 any 版本上工作):

-- WHEN-BUTTON-PRESSED trigger 
if :blk.textbox is null then
   go_item('blk.textbox');
end if;

如果不起作用,请检查 TEXTBOX 的属性。它真的是文本(或显示)项吗?启用了吗?是否有任何 SET_ITEM_PROPERTY 调用使其不可用?

因为,您要执行的任务确实微不足道,那应该就像那样