| 请 鼠标双击、或回车 打开内置的非模式对话框:

1.请参看该Treelist的XML模式文件，实现的关键点在于XML中的EditFreeformId：

    <Properties editFreeformId="FR1"/>

以及内置的 freeform 资源：

    <FreeformRes>
     <!--方案1：固定freeform-->
     <freeform id="FR1" url="freeform71.xml" IdOk="ok" IdCancel="cancel" height="200" bgColor="#aaccff" alpha="100" extWidth="0"/>
     <!--方案2：动态freeform模版-->
     <freeform id="FR2" url="freeform72.xml" IdOk="ok" IdCancel="cancel" height="200" bgColor="#aaccff" alpha="100" extWidth="0"/>
    </FreeformRes>

2.内嵌的freeform对话框请参看方案1的XML模式文件, 以及方案2的动态XML模式文件
3.OnEvent( )事件，只处理了"Escape"键，让其关闭对话框:

    function OnEvent(id, Event, p1, p2, p3, p4)
    {
     //非模式对话框打开期间
     if(AF.func("isInnerDialogOpen", "")==1) {
      if(Event == "EditKeydown" && p2 == 27) {
       //Escape键: 关闭对话框
       AF.func("closeInnerDialog", "");
      }
      else if(Event=="ButtonClicked" && p1=="ok") {
       //点了“确定”按钮
       //你可以在此书写： AF.func("CancelEvent", ""); 阻止确认动作
      }
     }
    }

4.动态生成XML的规则请参考Treelist的开发文档"8.嵌入Freeform":