PB dw dddw技巧收集

一、如何在DDDW中敲入字母时DDDW始终下拉状态?

解决方案:
1、声明实例变量:

boolean ib_show

2、声明外部函数:

Subroutine keybd_event(int bVk,int bScan,ulong dwFlags,ulong dwExtraInfo) LIBRARY "user32.dll"

3、新建自定义事件:pbm_dwnkey代码如下:

if getcolumn() = 2 then //这里假设你的DDDW是第2列,如果是其他列,则自行修改

if not ib_show then

keybd_event(18,0,0,0)

keybd_event(40,0,0,0)

keybd_event(40,0,2,0)

keybd_event(18,0,2,0)

ib_show = true

end if

else

ib_show = false

end if

4、在DW的clicked和doubleclicked事件中分别写入:

ib_show = false

5、测试一下吧,这样即可弹出下拉DDDW,但是DDDW自动滚动的代码我没有写,你自己完成吧!
--------------------- 
作者:balloonman2002 
来源:CSDN 
原文:https://blog.csdn.net/balloonman2002/article/details/266470 
版权声明:本文为博主原创文章,转载请附上博文链接!

二、【PB】动态添加数据窗口列中下拉列表的内容

1.设置数据窗口某个列(dept_id)的style type为DropDownListBox:

dw_1.Modify("dept_id.ddlb.case='any'")   
2.为下拉列表框添加数据:

boolean lb_flag = false
string ls_facno, ls_facname, ls_value
 
declare cur_munit dynamic cursor for sqlsa ;
prepare sqlsa from "select distinct facno from secmemb where userno = ? order by facno" ;
open dynamic cur_munit using :userid ;
 
ls_value = colname + ".values=' ~t '"
fetch cur_munit into :ls_facno ;
 
do while sqlca.sqlcode = 0
    ls_facno = Trim(ls_facno)
    select facname into :ls_facname from misunit where facno = :ls_facno ;
    if not lb_flag then
        ls_value = colname + ".values='"
        lb_flag = true
    else
        ls_value += "/"
    end if
    ls_value += Trim(ls_facname) + "~t" + Trim(ls_facno) 
    fetch cur_munit into :ls_facno ;
loop
 
close cur_munit ;
 
ls_value += "'"
 
if dwobj.Modify(ls_value) <> "" then return -1
--------------------- 
作者:灰色轨迹 
来源:CSDN 
原文:https://blog.csdn.net/lijianhe043/article/details/7909752 
版权声明:本文为博主原创文章,转载请附上博文链接!

三、【PB】如何给datawindow某一列动态设置成dddw或者ddlb,并且赋值

(1)切换成DDDW:   
  dw_1.Modify("#1.dddw.Name='dddw_jg'")   
  dw_1.Modify("#1.dddw.DisplayColumn='name_jg'")   
  dw_1.Modify("#1.dddw.DataColumn='id_jg'")   
  (2)切换成DDLB:   
  dw_1.Modify("#1.ddlb.case='any'")     
  dw_1.Object.#1.Values   ="red~t1/white~t2"   
  (3)切换成EDIT:   
  dw_1.Modify("#1.edit.case='any'")   
  dw_1.Modify("#1.edit.AutoSelect='Yes'")   
  (4)获取当前风格:   
  dw_1.Describe("#1.Edit.Style")   
  (5)如果还不行,可能得要如下操作:   
  dw_1.Modify("#1.dddw.Name=''")一下;

-----------------------------------------------------------------------------------------------

方法:动态建立变换dddw和edit风格

//d_province为下拉数据窗囗对象 
If is_flag = 'A ' Then //变为dddw 
dw_1.Modify( "province.dddw.Name = 'd_province ' ") 
dw_1.Modify( "province.dddw.DataColumn = 'id ' ") 
dw_1.Modify( "province.dddw.DisplayColumn = 'province ' ") 
dw_1.Modify( "province.dddw.AllowEdit = 'True ' ") 
dw_1.Modify( "province.dddw.AutoRetrieve = 'True ' ") 
is_flag = 'B ' 
Else //变回edit 
dw_1.Modify( "province.dddw.Name = ' ' ") 
dw_1.Modify( "province.dddw.DataColumn = ' ' ") 
dw_1.Modify( "province.dddw.DisplayColumn = ' ' ") 
dw_1.Modify( "province.dddw.AllowEdit = ' ' ") 
dw_1.Modify( "province.dddw.AutoRetrieve = ' ' ") 
is_flag = 'A ' 
End If

转自:https://blog.csdn.net/tlammon/article/details/43735715?utm_source=blogxgwz1

四、pb里怎么动态改变dw内text的字体大小

dw_1.modify("text1.font.face='宋体' ")
dw_1.modify("text1.font.height='-9' ")
or:
dw_1.Object.text1.Font.Face='宋体'
dw_1.Object.text1.Font.height='-9'

要修改font的相关属性

例dw_1.Object.emp_name_t.Font.Face = "Arial" //改字体
dw_1.Object.emp_name_t.Font.height = -10  //改字号

相关属性说明
Font.CharSet 指定该对象中文字使用的字符集 有效值为 0—ANSI 1—指定字体的缺省字符集 2—Symbol 128—Shift JIS 255—OEM
Font.Escapement 指定字符显示的倾斜角度 0为水平 45为旋转45度Font.Face  指定字体名称 比如Arial Courier 宋体 楷体等
Font.Family 指定字体系列 Windows 根据字体系列和字体名称决定使用的字体 有效值为 0—任何字体 1—Roman 2—Swiss 3—Modern 4—Script 5—Decorative
Font.Height  指定字体的高度 按数据窗口对象中定义的单位计量 如果想按点数指定高度 那么请用负值表示
Font.Italic  指定文字是否以斜体显示 缺省值为no
Font.Pitch  指定字体特性 有效取值为 0—使用系统缺省特性 1—定宽字体 2—变宽字体
Font.Strikethrough 指定文字上是否加删除线 缺省值为no
Font.Underline  指定文字上是否加下划线 缺省值为no
Font.Weight  指定文字的磅数 400为正常字体 700为粗体
Font.Width  指定字体的宽度 按数据窗口对象中定义的单位计量 该属性通常不需指定 它将根据其它属性的值得到缺省设置

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值