前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最不像 VFP Grid 的 VFP Grid

最不像 VFP Grid 的 VFP Grid

作者头像
firstxinjie
发布于 2024-12-06 06:23:46
发布于 2024-12-06 06:23:46
11800
代码可运行
举报
文章被收录于专栏:X#(XSharp)X#(XSharp)
运行总次数:0
代码可运行

我对 VFP 的 Grid 有一个说法:VFP 中最诡异的控件。

有很多人因为各种原因以使用 VFP 为“耻”。尤其是 Grid 又是最常用的控件之一,它的各种“特征”好像都是 VFP 独有的。因此,才有了下面的代码,使 VFP Grid 看上去不像是 VFP Grid:

基于 Grid 基类创建一个自定义基类,并添加一个名为“Mask”的自定义方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
If !PemStatus(This.Parent, [tq_shape], 5)
  This.Parent.NewObject([tq_shape], [Shape])

Else
  Thisform.LockScreen = .T.
  This.Parent.tq_shape.visible = .F.
EndIf

With This.Parent.tq_shape As Shape
  .visible = .T.
  .BackColor    = This.BackColor
  .Bordercolor  = This.BackColor
  .BorderWidth  = 0
  .Top  = This.Top + This.HeaderHeight + 1
  .Left  = This.left
  .width   = 0

  For m.i = 1 To This.ColumnCount
    Try
      If  This.Columns(m.i).Visible    And ;
        This.Columns(m.i).Width <> 0  And ;
        Objtoclient(This.Columns(m.i).Objects(1), 3) <> 0
    
        .Left = .Left + This.Columns(m.i).Width + 1
      Endif
    Catch
    Endtry
  Endfor

  .Left  = .Left + Iif(This.RecordMark = .T., 10, 0) + 1

  m.lnWidth = This.Width + This.left - .Left - Iif(Inlist(This.ScrollBars, 2, 3), Sysmetric(5), 0) - 2

  If m.lnWidth > 0
    .Width = m.lnWidth

  Else
    .Width = 0
  EndIf

  .Height = This.Height - This.HeaderHeight - Iif(InList(This.ScrollBars, 1, 3), Sysmetric(8), 0) - 3


  Thisform.LockScreen = .F.
Endwith

然后,在控件的 Resize、Refresh、Scrolled 执行时,调用这个 Mask 方法。适当的 Grid 属性设置,能使其外观更趋完美......

试试这个 VFP Grid 的“美容手术”?

Follow me,认识不一样的 VFP !

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档