aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 11761|回复: 5

在子窗体内如何修改父窗体嵌入的htmlayout中的节点内容

[复制链接]

37

主题

147

回帖

1240

积分

四级会员

积分
1240
发表于 2012-11-11 12:44:27 | 显示全部楼层 |阅读模式
如下代码所示,我建立了父子窗体,均使用htmlayout,现在可以实现在子窗体中修改父窗体上的button的text,但是想修改htmlayout里面的那个button怎么写,主要不知道怎样在子窗体中得到父窗体htmlayout里的节点

父窗体代码

import win.ui;
/*DSG{{*/
var winform = ..win.form( text="HTMLayout 无边框窗口演示";bottom=422;parent=...;right=654;border="resizable" )
winform.add(
button={ bottom=355;text=
"button";left=116;top=331;z=1;right=220;cls="button" }
)
/*}}*/

import web.layout;
import web.layout.behavior.windowSizer;//支持拖动边框
import web.layout.behavior.windowCommand;//支持标题栏按钮

wbLayout = web.layout( winform )  
wbLayout.html =
/**
<html>
<head>
</head>
<body>
  <button id="openChild">打开新窗口</button>
</body>
</html>      
**/

wbLayout.css =
/**
@const BORDER_COLOR: #245E82;
@const CLIENT_COLOR: #EFF7FC;  

body {
  margin: 0;
  border: 1px solid @BORDER_COLOR;
  border-radius: 4px;
  background: @CLIENT_COLOR;
}
**/

//圆角窗口
import win.util.round;
win.util.round(winform)

wbLayout.onButtonClick =
function (ltTarget,ltEle,reason,behaviorParams) {
   
if(ltEle.id="openChild"){
        child=winform.loadForm(
"/child.aardio")
        child.doModal(winform)
    }
}
winform.show()
win.loopMessage();
return winform;


子窗体代码

@

import win.ui;
/*DSG{{*/
var child = ..win.form( right=172;bottom=118;parent=...;text="aardio Form";border="resizable" )
child.add(  )
/*}}*/

import web.layout;
import web.layout.behavior.windowSizer;//支持拖动边框
import web.layout.behavior.windowCommand;//支持标题栏按钮

wbLayout = web.layout( child )  
wbLayout.html =
/**
<html>
<head>
</head>
<body>
  <button>修改父窗口</button>
</body>
</html>      
**/

wbLayout.css =
/**
@const BORDER_COLOR: #245E82;
@const CLIENT_COLOR: #EFF7FC;  

body {
  margin: 0;
  border: 1px solid @BORDER_COLOR;
  border-radius: 4px;
  background: @CLIENT_COLOR;
}
**/


import win.util.round;
win.util.round(child)
wbLayout.onButtonClick =
function (ltTarget,ltEle,reason,behaviorParams) {
  
  child.parent.button.text=
"abc"//可修改父窗体上的button
  //想修改父窗体上的htmlayout里的button怎么写
}

win.loopMessage();
return child;


4

主题

852

回帖

4689

积分

荣誉会员

积分
4689
发表于 2012-11-11 13:07:19 | 显示全部楼层
  1. var wbLayout  = child.parent._layout
复制代码
然后,其他东西是一样的,

其实思路放开一些,即使不用上面的方法,你也能找出一大堆的方法。
例如在主窗体中 winform.wbLayout  = wbLayout 你自己把HTMLayout对象变成窗体的成员对象。

或者你为主窗体添加成员函数
winform.控制网页 = function() {}

然后你在子窗体中只要调用 child.parent.控制网页() 就行了。

动态语言就是这样,随心所欲,一切皆对象。

37

主题

147

回帖

1240

积分

四级会员

积分
1240
 楼主| 发表于 2012-11-11 14:22:34 | 显示全部楼层
不争 发表于 2012-11-11 13:07
然后,其他东西是一样的,

其实思路放开一些,即使不用上面的方法,你也能找出一大堆的方法。

嗯,后来还是想到了child.parent._layout ,但是不知怎么写代码时脑袋不知想什么了,一直没写对,就怎么也弄不过。

谢谢

9

主题

444

回帖

2546

积分

版主

积分
2546
发表于 2012-11-11 18:54:34 | 显示全部楼层
lzj_ykds 发表于 2012-11-11 14:22
嗯,后来还是想到了child.parent._layout ,但是不知怎么写代码时脑袋不知想什么了,一直没写对,就怎么也 ...

我也经常这样,
所以有头脑风暴一说,想不明白的时候,在论坛交流一下,
多找人说说,思路就活了,有时候自己就想通了。

0

主题

2

回帖

11

积分

新手入门

积分
11
发表于 2012-12-14 19:10:05 | 显示全部楼层
我用child.parent._layout.button.text="ss"还是不能改变,楼主你的可以?
后来用var vBtn=child.parent._layout.$1("button")得到button元素,用vbtn.text="",和vbtn.name还有vbtn.value均无法改变父窗口layout中button按钮的文字。
来个高手指点一下啊

0

主题

2

回帖

11

积分

新手入门

积分
11
发表于 2012-12-14 20:09:04 | 显示全部楼层
按钮上的文字还是不知道怎么改,但文本框的这样做:
child.parent._layout.getEle("文本框id").value="ffff"

点评

有新问题可另外发主题帖,按钮使用的是<btutton>那么使用layoutEle.innerText修改文本  发表于 2012-12-14 23:04
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2023-9-24 17:39 , Processed in 0.064762 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表