如何删除对话框中 dialogFieldValue 中的自动完成字符串?

How to delete AutoComplete string in dialogFieldValue in my Dialog?

我创建了一个对话框我有这个代码:

dialog     dialog;
DialogText dialogText ;
DialogButton dialogButton;
DialogField dialogFieldI, dialogFieldII;
str fieldDel, confirm;
MyTableDelete tabledelete;

dialog = new Dialog("Dialog name");
dialog.addText("Write to confirm");
dialog.addText("DELETE");

dialogFieldI = dialog.addFieldValue(extendedTypeStr(String30), fieldDel , "Insert value");
dialogFieldII = dialog.addFieldValue(extendedTypeStr(String30), confirm, "Confirm delete");

dialog.run();
confirm = dialogFieldIi.value();
fieldDel = dialogFieldI.value();

if(dialog.closedOk() )
{
    if(confirm == "DELETE")
    {
      ttsBegin;
      select forUpdate tableDelete
      where tableDelete.field == fieldDel;
      tableDelete.delete();
      ttsCommit;
    }
}

我第一次启动时遇到问题,在 dialog.addFieldValue 什么都没有,但是如果我第二次启动 Dialog,在 dialogField 中会自动出现文本 "DELETE".[=12 的建议=]

存在点击后清理(cacheclean)的方法。

我的重点不是让插入 Confimr 文本变得容易 ("DELETE")。

如果我也能知道如何与 if() 语句中的大写字母进行比较,那将是一件好事。

我加了一张图片,我要删除自动合成句:

谢谢你的时间,

尽情享受吧!

您编写的代码将无法运行。 Dialog 未初始化,我看不到它以任何方式将 "Delete" 放入 dialogField。我猜我们遗漏了一些代码,但您需要禁用从 SysLastValue.

加载

编辑 添加 Jan 的评论: 考虑使用 addField 而不是 addFieldValue,看看是否是这个原因。

如果您的代码是来自控制器的 运行,您可以:

controller.parmLoadFromSysLastValue(false);

这实际上比我最初想象的要复杂,除非我错过了更简单的方法。我能够重现你的问题,我解决它的方法是使用 formRun() 上存在的方法 delAutoCompleteString(),它是在你调用 dialog.run() 时创建的,或者它可以预先-通过调用 dialog.doInit().

创建

解决这个问题很有趣,所以希望这对遇到同样问题的其他人有所帮助。这是在表单控件上禁用自动完成。

// Added these three lines in code block below

dialog.doInit();

dialog.formRun().delAutoCompleteString(dialogFieldI.control());

dialog.formRun().delAutoCompleteString(dialogFieldII.control());

查看我添加这 3 行的调整后的代码。:

dialog     dialog;
DialogText dialogText ;
DialogButton dialogButton;
DialogField dialogFieldI, dialogFieldII;
str fieldDel, confirm;
MyTableDelete tabledelete;

dialog = new Dialog("Dialog name");
dialog.addText("Write to confirm");
dialog.addText("DELETE");

dialogFieldI = dialog.addFieldValue(extendedTypeStr(String30), fieldDel , "Insert value");
dialogFieldII = dialog.addFieldValue(extendedTypeStr(String30), confirm, "Confirm delete");

    
// AlexOnDAX (06/08/2015)
// Added these lines
//-->
dialog.doInit();
dialog.formRun().delAutoCompleteString(dialogFieldI.control());
dialog.formRun().delAutoCompleteString(dialogFieldII.control());
//<--
    
dialog.run();
confirm = dialogFieldIi.value();
fieldDel = dialogFieldI.value();

if(dialog.closedOk() )
{
    if(confirm == "DELETE")
    {
        ttsBegin;
        select forUpdate tableDelete
        where tableDelete.field == fieldDel;
        tableDelete.delete();
        ttsCommit;
    }
}