【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



### PowerBuilder 中为下拉列表框 (ddlb) 赋值的方法 在 PowerBuilder 中,可以通过多种方式为下拉列表框(`ddlb`)赋值。以下是几种常见的方法及其具体实现: #### 方法一:通过 `DataWindow` 对象绑定数据源 如果 `ddlb` 是嵌套在一个 DataWindow 控件中的,则可以利用 DataWindow 的数据源来填充下拉列表框的内容。 ```powerscript // 假设有一个名为 dw_1 的 DataWindow 控件 dw_1.SetRedraw(FALSE) // 设置 DataWindow 数据源并刷新显示 SQLCA.DBMS = "MSSQL" SQLCA.Database = "YourDatabaseName" SQLCA.LogId = "YourUserId" SQLCA.Password = "YourPassword" CONNECT USING SQLCA; dw_1.Retrieve() dw_1.SetRedraw(TRUE) ``` 此代码片段展示了如何连接数据库并将查询结果加载到包含 `ddlb` 的 DataWindow 中[^1]。 --- #### 方法二:直接设置静态选项 可以直接向 `ddlb` 添加固定的选项项,适用于不需要动态更新的情况。 ```powerscript // 获取 ddsld 下拉列表对象 ddw_listbox.Object.DataWindow.Value = 'Option 1~tOption 2~tOption 3' // 或者逐条添加项目 ddw_listbox.AddItem(1, "Value 1") ddw_listbox.AddItem(2, "Value 2") ddw_listbox.AddItem(3, "Value 3") ``` 上述代码演示了两种不同的方式来手动定义下拉列表框的选项内容[^2]。 --- #### 方法三:从外部文件读取大文本作为选项 当需要处理大量选项或者这些选项存储在外置文件中时,可以从文件中读取数据并将其导入至 `ddlb`。 ```powerscript Blob lb_data String ls_file_path ls_file_path = GetFullFileName(GetCurrentDirectory() + "\options.txt") IF FileExists(ls_file_path) THEN lb_data = gf_adodb_blob_read(ls_file_path) FOR i = 1 TO LenB(lb_data) ddw_listbox.AddItem(i, String(MidB(lb_data, i, 1))) NEXT ELSE MessageBox("Error", "File not found!") END IF ``` 这里使用了一个自定义函数 `gf_adodb_blob_read()` 来读取外部文件的数据,并逐一将每一行加入到 `ddlb` 中。 --- #### 方法四:基于数据库查询动态赋值 对于依赖于实时变化的数据集场景,可执行 SQL 查询获取最新记录集合用于填充 `ddlb`。 ```powerscript Integer li_row_count String sql_query, ls_value sql_query = "SELECT option_id, option_name FROM options_table ORDER BY option_id ASC;" DECLARE cr_cursor DYNAMIC CURSOR FOR sql_query; OPEN DYNAMIC cr_cursor USING SQLCA; FETCH cr_cursor INTO :li_row_count, :ls_value; WHILE SQLCODE = 0 ddw_listbox.AddItem(li_row_count, ls_value) FETCH cr_cursor INTO :li_row_count, :ls_value; END WHILE CLOSE cr_cursor; ``` 该脚本说明了怎样构建一个游标去遍历表内的所有符合条件的结果,并依次填入目标控件之中。 --- ### 总结 以上介绍了四种主要途径完成对 PowerBuilder 应用程序里 ddlb 组件初始化操作的过程描述。每种技术都有其适用范围,在实际开发过程中可以根据需求灵活选用最合适的方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值