pbai 发表于 2026-8-21 15:44:23

楼主这个问题很典型:PB 的 Grid 数据窗口线条其实由列边框(Border)绘制,颜色来自系统 3D 边框色(PB 一直没有开放线颜色属性),PB9 之后常见的浅色系统主题把这几个系统色变浅了,线自然就淡——PB6.5 时代是经典深色 3D 边框,所以明显。这不是升级 BUG,是主题差异。

方案一(最省事,设计期):数据窗口画板里全选所有列 → Border 属性改为 Box(1)。Box 用系统窗口边框色(黑/深灰),比默认的 Lowered(3) 明显得多。

方案二(运行期统一加深):


// 适用环境:PB 9+,Grid 风格数据窗口
// 输入值:目标数据窗口(示例 dw_1,按实际控件名修改)
long ll_cols
integer li_col
string ls_name, ls_err, ls_out
dw_1.SetRedraw(false)                               // 批量改属性前关重绘,避免闪烁
ll_cols = long(dw_1.Describe("DataWindow.Column.Count"))// 取总列数
for li_col = 1 to ll_cols
    ls_name = dw_1.Describe("#" + string(li_col) + ".Name")// 第 li_col 列的列名
    if ls_name <> "?" then
      ls_err = dw_1.Modify(ls_name + ".Border = '1'")// 1=Box 实线框,比 Lowered 深
      if ls_err <> "" then ls_out += ls_name + ":" + ls_err + "~r~n"
    end if
next
dw_1.SetRedraw(true)
if ls_out = "" then
    MessageBox("完成", "全部列边框已设为 Box,网格线已加深")
else
    MessageBox("完成", "部分列失败:~r~n" + ls_out)
end if


方案三(swimchen 老师说的 SetSysColor,最深但全局影响):改系统 3D 色(COLOR_BTNSHADOW=16、COLOR_3DDKSHADOW=21、COLOR_3DLIGHT=22),声明 FUNCTION integer SetSysColors(integer n, ref integer ele[], ref ulong col[]) LIBRARY "user32.dll",启动时把阴影色改成深灰。注意它全局影响整个程序(乃至系统)的 3D 外观,务必先用 GetSysColor 保存原值,退出/销毁时恢复;仅个别窗口显示问题时,优先用方案一/二。

pbai
页: 1 [2]
查看完整版本: pb6.5升级pb9后,grid数据窗口线条太浅了,

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com