首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IntraWeb表单可以按需同步吗?

IntraWeb表单可以按需同步吗?
EN

Stack Overflow用户
提问于 2009-10-23 12:45:35
回答 2查看 2.5K关注 0票数 1

场景:我有一个Delphi应用程序,它在屏幕上有一些编辑组件和按钮。在TIWEdit.OnAsyncExit和TIWButton.OnClick中设置一个标志,应用程序中的另一个线程根据标志和其他应用程序数据设置按钮的启用属性。

设置TIWButton.Enabled属性时,请求已经完成,下一个交互被取消,因为IW发现内部表示和HTML不同步。它重新合成,你必须再次点击。

我想按需要刷新屏幕。

  • :一种计时器,它可以确定两者是否同步,并在流量和定时方面发出刷新(我可以在计时器运行之前单击一个按钮)。
  • 是一个很好的方法,可以推送数据。
  • 也许IW可以在不取消我刚才提交的操作的情况下执行非保存同步。

由于我的屏幕是由模型驱动的(我无法预测屏幕上的组件以及组件之间的相互依赖关系,即业务逻辑中的组件之间的相互依赖关系),因此我无法添加JavaScript来启用或禁用按钮,具体取决于用户的操作。

EN

回答 2

Stack Overflow用户

发布于 2009-10-25 17:01:46

我不完全确定你的问题是否与我的问题相同,但我认为有许多共同之处。请参阅我在网上论坛上发布的演示项目(v2)。

基于杰克逊戈麦斯的一些评论,我在一个长时间运行的线程启动之前启用一个TIWTimer,并在线程结束后禁用它。参见:http://forums3.atozed.com/IntraWeb.aspx (atozedsoftware.intraweb.attachments),线程'IWLabel通过线程更新‘,2009年10月15日。

OnASync计时器事件每500毫秒启动一次,并使用一些带宽。在我的情况下可以接受(公司内部网)。

格特

票数 0
EN

Stack Overflow用户

发布于 2009-10-31 21:22:14

您可以使用IWElite组件包中的。

本质上,您可以使用XMLHTTPRequest (XHR)对象编写一些Javascript,以调用您的IW应用程序的would,该操作在处理完成后返回。如果您需要您的IW应用程序继续正常工作,而进程正在运行,您的Javascript可以打开一个进度窗口,并从那里进行XHR调用。

IW精英可以在这里找到:http://code.google.com/p/iwelite/

XHR请求如下所示:

代码语言:javascript
复制
function NewXHR() {
  if (typeof XMLHttpRequest == "undefined") {
    try { return new ActiveXObject('Msxml2.XMLHTTP.6.0');} catch(e) {}
    try { return new ActiveXObject('Msxml2.XMLHTTP.3.0');} catch(e) {}
    try { return new ActiveXObject('Msxml2.XMLHTTP');} catch(e) {}
    try { return new ActiveXObject('Microsoft.XMLHTTP');} catch(e) {}
    throw new Error('AJAX not supported in this browser.');
  } else {
    return = new XMLHttpRequest();
}

var xhr = NewXHR();
xhr.open("get", '/mywebaction', false);
xhr.send(null);
window.alert(xhr.responseText);

上面的代码将阻塞并等待响应。如果您希望它异步运行,则可以执行以下操作:

代码语言:javascript
复制
var xhr = NewXHR();
xhr.open("get", '/mywebaction', true);
xhr.onreadystatechange = function() {
  if(xhr.readyState == 4) {
    if ((xhr.status == 200) || (xhr.status == 304) || (xhr.status === 0)) {
      window.alert('Success: '+xhr.responseText);
    } else {
      window.alert('Error: ('+xhr.status+') '+xhr.statusText;
    }
  }
};
xhr.send(null);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1613199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档