超级菜的问题,请教了。

r9lu 2003-12-12 09:28:18
小弟初学pb,现有两个窗口
第一个窗口中:sle_1,cb_1
第二个窗口中:dw_1
请问如何把第一个窗口中的sle_1中输入的内容作为参数传给第二个窗口,使得第二个窗口一打开,其中的dw_1中就显示该与参数相关的记录(参数值是dw_1中的数据窗口对象相对应表中的一个列的值)
...全文
16 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lmby 2003-12-12
string ls_parm

ls_parm = message.stringparm
dw_1.settransobject( sqlca )
dw_1.retrieve( ls_parm )

  • 打赏
  • 举报
回复
r9lu 2003-12-12
按照楼各位说的写了,单击w_1的cb_1后,提示
Database transaction information not available.
Call SetTrans or SetTransObject function.

然后w_2中的dw_1是空的,没有retrieve会任何值啊。
  • 打赏
  • 举报
回复
icedot 2003-12-12
五五,太过分了。打完字发现既然是第三个了。我打子速度太慢了。

  • 打赏
  • 举报
回复
icedot 2003-12-12
way1:在第一个窗口中打开的是用OpenWithParm(第二个窗口,参数)

way2:在第二个窗口open 事件中接收
如果你的参数是string 型的。string xx
xx = Message.StringParm
dw_1.retrieve(xx)

当然在dw_1.要设按参数检索。

  • 打赏
  • 举报
回复
klbt 2003-12-12
同意楼上,注意,第二个窗口的dw_1要建立一个参数,条件是与对应列比较运算
  • 打赏
  • 举报
回复
kingworld 2003-12-12
第一个窗口中
openwithparm(w_2, sle_1.txt)

第二个窗口的open事件中
string ls_parm

ls_parm = Message.StringParm

dw_1.SetTransObject(SQLCA)
dw_1.Retrieve(ls_parm)
  • 打赏
  • 举报
回复
lmby 2003-12-12
w_1.cb_1:

string ls_text

ls_text = trim( sle_1.text )

openwithparm( w_2, ls_text )

w_2.open:

string ls_parm

ls_parm = message.stringparm
dw_1.retrieve( ls_parm )
  • 打赏
  • 举报
回复
相关推荐
在PB中使用WINSOCK.OCX做双向通信的简单例子----PowerBuilder 一、在窗口中添加WINSOCK控件:   在应用中新开一个窗口,在窗口画板中点击controls-->OLE单项,弹出 Insert object窗口,单击Insert control标签,从列表框中双击选定 Microsoft Winsock control,将winsock的图标贴在窗口上。   在程序中该控件名称定为winsock_a(甲方)和winsock_b(乙方)。   二、设置信息输入输出文本框:   在窗口中增加一个按钮cb_1,两个单行文本框sle_1,sle_2,分别用于输入 要发送的字符串和接受对方发送的字符串。   三、设置通讯协议:   WINSOCK控件允许用户以UDP和TCP两种协议中任选一种进行通讯。   1.UDP协议设置:UDP协议是一种无连接的通讯协议,在通讯之前,需要绑 定remotehost和remoteport属性,如果需要双向通讯,还要设置localport属性 。   在甲方(本机地址为:134.1.1.1)窗口的Open事件中加入如下语句: winsock_a.object.protocol=1 //winsock通讯协议设为UDP协议 winsock_a.object.remotehost="134.1.1.2" //对方的ip地址 winsock_a.object.remoteport=6000 //对方的winsock通讯端口号 winsock_a.object.localport=6001 //本机的winsock通讯端口号 winsock_a.object.bind //绑定通讯协议   在乙方(本机地址为:134.1.1.2)窗口的Open事件中加入如下语句: winsock_b.object.protocol=1 //winsock通讯协议设为UDP协议 winsock_b.object.remotehost="134.1.1.1" //对方的ip地址 winsock_b.object.remoteport=6001 //对方的winsock通讯端口号 winsock_b.object.localport=6000 //本机的winsock通讯端口号 winsock_b.object.bin //绑定通讯协议   2.TCP协议设置:TCP协议在通讯前需要进行连接。   在甲方(作为服务器端)窗口的Open事件中加入如下语句: winsock_a.object.protocol=0 //winsock通讯协议设为TCP协议 winsock_a.object.localport=6001 //本机的winsock通讯端口号 winsock_a.listen() //启动监听   在甲方winsock_a控件的Connectionrequest事件中加入如下语句: //接受到对方的连接请求后 if winsock_a.object.state0 then winsock_a.close() end if winsock_a.accept(requestID) //建立直接连接 //requestID是Connectionrequest事件自己的参数   在乙方(作为客户端)窗口的Open事件中加入如下语句: winsock_b.object.protocol=0 //winsock通讯协议设为TCP协议 winsock_b.object.remotehost="134.1.1.2" //对方的ip地址 winsock_b.object.remoteport=6000 //对方的winsock通讯端口号 winsock_b.connect() //发出连接请求   3.无论采用哪种协议,都要在窗口的Close事件中加入如下语句: if winsock_a/*或winsock_b*/.object.state0 then winsock_a.close() end if   否则可能第二次使用时发生异常问题   四、开始通讯   在按钮cb_1(caption属性设为‘发送’)的click事件中加入如下语句: winsock_a/*或winsock_b*/.object.send (sle_1.text)   在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下语句: //接受到对方数据后 string datastr1 winsock_a/*或winsock_b*/.object.getdata (def datastr1) sle_2.text=datastr1 //将数据字符串显示在文本框中   以上程序实际上体现了聊天器的底层工作原理,稍加修改扩充就可以做成
第1章 窗口与控件 1.1 制作Splash窗口 -- Splash 1.2 制作美观的状态条 -- StatusBar 1.3 系统热键的实现 -- HotKey 1.4 创建图标栏应用 -- Systray 1.5 MDI窗口显示背景图片 -- MDIBmp 1.6 定制有特色的图标按钮 -- PictureButton 1.7 导航图界面的制作 -- FlowChat 1.8 制作图文并茂的单 -- BmpMenu 1.9 窗口内控件大小与窗口大小同步 -- Autosize 1.10 动态创建控件 -- DynamicControl 1.11 控件融合技术 -- SplitBar 1.12 窗口中控件显示 -- ToolTips 第2章 数据窗口 2.1 数据窗口组合条件查询 -- Search 2.2 数据窗口中实现增量查询 -- zlcx 2.3 数据窗口的多表更新 -- UpdateMultable 2.4 单击标题栏对数据窗口排序 -- TitleSort 2.5 数据窗口中用回车键实现Tab键切换列焦点功能 -- Tab-Enter 2.6 动态数据窗口 -- DynamicDataWindow 2.7 复合数据窗口 -- AddTitle 2.8 数据窗口打印处理 -- PrintPreview/PrintPreview3 (PrintPreview和PrintPreview3内容是相同的,但在实现上有些区别) 2.9 捕捉DropDownDataWindow列相关键事件 -- dddw 2.10 数据窗口中闪烁文字显示的实现 -- dwTimer 2.11 在GRID风格DataWindow中调整列顺序 -- ChangeColumnOrder 2.12 利用数据窗口计算表达式 -- Calculate 2.13 获取数据窗口中列在数据库中的实际域名 -- GetFieldName 2.14 数据窗口的最大/最小化显示实现 -- dwResize 第3章 PowerScript 本章所要使用的资源文件--pic 3.1 PowerBuilder8新增函数、功能使用简介 3.1.1 文件系统函数 -- FileFunction 3.1.2 打印函数 -- Printer 3.1.3 系统函数 -- SysFunction 3.2 记录系统出错信息 -- SysError 3.3 注册表函数应用 -- Regedit 3.4 连接任意ODBC数据源 -- ODBCList 3.5 在应用程序中关闭外部程序 -- CloseApp 3.6 在应用程序中启动控制面板项目 -- RunControl 3.7 判断是否处于开发模式 -- GetMode 3.8 非TAB分隔符文本文件倒入数据窗口 -- ImportFile 3.9 编译后的程序带参数运行 -- MyApp 3.10 取当月的最后一天 -- GetLastDay 3.11 限制程序运行次数 -- OnlyOnce 3.12 打印文件的打印 -- prnplt 3.13 程序中实现拨号连接 -- Dial-up 第4章 数据库与SQL 4.2 PowerBuilder + ASA7的C/S编程 -- Client-Server 4.4 动态SQL -- DynamicSQL 4.5 存取二进制大对象 -- Blob 4.6 PowerBuilder应用取服务器时间 -- GetServerTime 4.7 PowerBuilder扩展属性系统表及其应用 -- SystemTable 4.8 程序中备份Adaptive Server Anywhere 7 数据库 -- DbBackup 第5章 用户对象 5.1.1 创建定制的用户对象(创建弹压式按钮) -- ToggleButton 5.1.2 创建标准的可视用户对象(扩展的数据窗口) -- Datawindow 5.1.3 创建可视外部用户对象(状态条) -- StatusBar 5.2.2 创建通用不可视用户对象(FTP应用) -- Ftp
在百度搜索修改超级列表框(SysListView32)的行高的方法,可以得到很多结果。不过都是千篇一律的。无论是修改字体还是设置图片组,本质都是一样的,通过撑开的方法调整行的高度。 今天这里介绍的方法,与之上不同,是真正修改超列的行高度。 要想修改行高,需要考虑的第一个问题,就是超列中有没有行高这个属性,以及如何修改他。答案确实是有的,这个值通过WM_MEASUREITEM消息设置。从字面可以理解,这是一个测量项目的消息。消息的lParam参数是一个MEASUREITEMSTRUCT结构。这个结构中包含了控件的ID,项目的索引,项目的宽高等成员。对于超列,他的有效成员只有控件的ID和项目的高度成员。只要在子类化过程中修改这个成员的值就可以达到真正改变行高的目的。 typedef struct MEASUREITEMSTRUCT { UINT CtlType; UINT CtlID; UINT itemID; UINT itemWidth; UINT itemHeight; ULONG_PTR itemData; } MEASUREITEMSTRUCT 有了上边这个消息的介绍,似乎一切都变的简单了,但是事实并非如此,如果直接SEND这个消息给窗口是木有什么效果的,事实上这个消息是超列控件通知给父窗口的。我们要考虑的第二个问题来了,如何让超列发送这个消息给他的父窗口呢?在MSDN关于WM_MEASUREITEM消息的说明中找到如下内容: The system sends the WM_MEASUREITEM message to the owner window of combo boxes and list boxes created with the OWNERDRAWFIXED style before sending the WM_INITDIALOG message. 大概的意思就是:系统为使用OWNERDRAWFIXED 风格创建的组合框和列表框的父窗口发送WM_MEASUREITEM 消息,还有就是,这个消息是在WM_INITDLALOG消息之前发送的。 看来要处理WM_MEASUREITEM 消息,我们要做两件事:1、为超列增加OWNERDRAWFIXED 风格。2、在WM_INITDLALOG之前处理。 先来看看OWNERDRAWFIXED风格。他在超列中对应的常量名是 LVS_OWNERDRAWFIXED。这个解决起来比较简单,我们只需要调用SetWindowLong这个API设置超列的GWL_STYLE,就可以为超列增加这个风格。 第二个问题就变的有些棘手,因为这个消息是在窗口创建后就触发的,所以除非我们自己创建一个超列控件,不然即便修改了超列,也还是得不到这个WM_MEASUREITEM 消息。到了这里似乎事情变的要无解了!不过办法总是会有的,既然WM_MEASUREITEM 是一个用来核算尺寸的消息,那么如果控件的字体或则尺寸被改变的话自然应该会触发这个消息。事实印证这个方法是可行的。我们可以通过修改一下超列的宽度属性,或者直接伪造一个WM_WINDOWPOSCHANGED消息,就可以在父窗口中收到WM_MEASUREITEM 消息了。 经过上边的一番折腾,终于得到了WM_MEASUREITEM 消息,修改了itemHeight成员的值后,超列的行高就被改变了。可是问题还没有完。这个时候,超列的行高虽然改变了,但是表项里的内容却不显示了。这个问题的原因是由于我们为超列增加了OWNERDRAWFIXED风格导致的。这个风格的作用是是否使用自绘,如果选择了这个风格,那么就表示你要自己把表项中的那些文本啊图标啊之类的内容自己画上去。单纯为了修改一个行高,这个代价太大了。先别怕,解决的办法很简单,反正这个时候,WM_MEASUREITEM 已经执行过了,超列中行高值已经被修改成功,如果不是需要再次修改行高的话,我们已经不在需要WM_MEASUREITEM 消息了,所以我们只要把LVS_OWNERDRAWFIXED风格从超列中移除就可以了。 执行完上面这些步骤后,超列的行高就被完美修改了。 最后的收尾工作:如果在调整窗口尺寸的时候,使用伪造WM_WINDOWPOSCHANGED消息的方法的话,这个时候滚动条的显示是没有变化的。需要在发送一个LVM_UPDATE消息给超列。这样整个的修改过程就全部完成了。
===============组件使用简要介绍=============== 1、在页面中引入ymPrompt.js。如: 2、在页面中引入对应的皮肤文件的CSS,如: 3、自定义组件的默认配置信息(此步骤可选,该方法可以在任意时间调用) 页面的js中通过ymPrompt.setDefaultCfg(cfg)方法修改组件部分或全部的默认属性。 如:ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'}) 组件的默认配置(对于没有设定的项将采用该配置项的默认值): { titleBar:true, //显示标题栏 fixPosition:true, //随滚动条浮动 dragOut:false, //不允许拖出页面 autoClose:true, //点击按钮后自动关闭页面 maskAlphaColor:'#000', //遮罩透明色 maskAlpha:0.1, //遮罩透明度 winAlpha:0.8, //拖动窗体时 窗体的透明度,默认为0.8 title: '标题', //消息框标题 message: '内容', //消息框按钮 width: 300, //宽 height: 185, //高 iframe:false, btn:null, icoCls:'', handler: function(){} //回调事件 showMask: true, //是否显示遮罩 winPos: 'c', //弹出窗口默认位置 closeBtn:true, //是否显示关闭按钮 //按钮文本,可通过自定义这些属性实现本地化 closeTxt: '关闭', okTxt:' 确 定 ', cancelTxt:' 取 消 ' } 4、根据您的需要调用相应的消息函数(两种参数传入方式): ymPrompt.alert(参数) //消息提示类型 ymPrompt.succeedInfo(参数) //成功信息类型 ymPrompt.errorInfo(参数) //错误信息类型 ymPrompt.confirmInfo(参数) //询问消息类型 ymPrompt.win(参数) //自定义窗口类型 参数传入方式包含两种: 第一种即传统的参数传入,按照顺序传入相应的参数值即可(一定要按照顺序),对于不需要设定的值请传入null。如ymPrompt.alert('内容',null,null,'标题') 参数顺序:message,width,height,title,handler,maskAlphaColor,maskAlpha, iframe,icoCls,btn,autoClose,fixPosition,dragOut,titleBar,showMask,winPos,winAlpha (推荐)第二种即JSON的传入方式,需要指定字段名,没有顺序,根据需要设定相关属性。如ymPrompt.alert({title:'标题',message:'内容'}) 五个方法的参数意义完全相同(所有参数均为可选,不传入则使用默认参数值),具体含义如下: message:消息组件要显示的内容,默认为“内容”。 width:消息框的宽度,默认为300。 height:消息框的高度,默认为185。 title:消息组件标题,默认为“标题” handler:回调函数。当确定/取消/关闭按钮被点击时会触发该函数并传入点击的按钮标识。如ok代表确定,cancel代表取消,close代表关闭 maskAlphaColor:遮罩的颜色,默认为黑色。 maskAlpha:遮罩的透明度,默认为0.1。 fixPosition:设定是否弹出框随滚动条一起浮动,保持在屏幕的固定位置,默认为true dragOut:设定是否允许拖出屏幕范围,默认为false。 autoClose:设定用户点击窗口中按钮后自动关闭窗口,默认为true(设定为false后程序中可以通过调用close方法关闭)。 titleBar:是否显示标题栏,默认显示。注意,如果没有标题栏需要自己在程序中控制关闭。 showMask:是否显示遮罩层,默认为true winPos:弹出窗口的位置,支持8种内置位置(c,l,t,r,b,lt,rt,lb,rb)及自定义窗口坐标,默认为c。 各参数意义:c:页面中间,l:页面左侧,t:页面顶部,r:页面右侧,b:页面顶部,lt:左上角,rt:右上角,lb:左下角,rb:右下角 winAlpha:弹出窗体拖动时的透明度,默认为0.8 //以下三个参数主要用于win方法(当然你也可以通过设定这些覆盖前面四个消息类型的默认属性)。 iframe:是否使用iframe方法加载内容,该属性如果为true或者object,组件则尝试将message内容作为url进行加载(如果属性值为一个object,则将object的内容添加为iframe的属性,如iframe:{id:'myId',name:'myName',src:'http://www.baidu.com'}则iframe的id为myId,name为myName,src为http://www.baidu.com)。默认为false。 icoCls:图标类型。传入的内容为className,具体写法可以参考ymprompt.css中对图标的定义方式。默认为空。 btn:按钮定义。传入的是数组形式。每个按钮的格式为['按钮文本','按钮标识'], 如[['确定','ok'],['取消','cancel'],['关闭','close']]等。 注意单个按钮应该是这样的:[['确定','ok']] closeBtn:是否显示关闭按钮,默认为true(显示)。 //以下参数可用于对组件语言本地化,如用于英文等系统中 okTxt:确定按钮的文本描述,默认为“确定” cancelTxt:取消按钮的文本描述,默认为“取消” closeTxt:关闭按钮的文本描述(鼠标放在关闭按钮上时显示),默认为“关闭” 5、操作接口: 属性: version:当前版本号 如:alert(ymPrompt.version) pubDate:当前版本的发布日期 如:alert(ymPrompt.pubDate); cfg:组件的当前的默认配置 方法: setDefaultCfg(cfg):设定组件的默认属性,设定后的所有弹出均默认采用cfg中的设置。 如:ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'}); //设定遮罩层颜色为蓝色,透明度0.2 getPage():在iframe窗口模式下,获取到iframe的dom对象。 如:alert(ymPrompt.getPage().contentWindow.document.body.outerHTML); //获取iframe页面的html内容 resizeWin(w,h):通过程序动态修改窗口的大小。参数:w:宽度,h:高度 如:ymPrompt.resizeWin(400,300); //修改弹出框宽度为400px,高度为300px doHandler(sign,autoClose):模拟触发某个按钮的点击事件。参数sign:传给回调函数的标识,autoClose:是否自动关闭窗口(默认采用全局配置) 如:ymPrompt.doHandler('ok',false); //触发确定按钮的点击事件,并且执行完回调函数后不关闭窗口 getButtons():获取当前弹出窗口的所有按钮对象,返回结果是一个对象集合(数组)。 如:var btnID=ymPrompt.getButtons()[0].id; //获取第一个按钮的id close():关闭当前弹出的窗口 如:ymPrompt.close() 6、其他说明:如果觉得“对象.方法”的调用方式比较麻烦,可以采用如下方式简化调用: 在调用之前设定var Alert=ymPrompt.alert。之后就可以使用Alert()的方式进行
发帖
PowerBuilder
加入

980

社区成员

PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
申请成为管理员
帖子事件
创建了帖子
2003-12-12 09:28
社区公告
暂无公告