标题:grid单元格格式问题
只看楼主
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-24 13:07:08的发言:

哪来的本地表,demo.rar 里面有 dbf 吗?同样是临时表, 表单 init 方法中生成的 cursor

用代码加没好处,想加点事件处理代码还得用 bindevent 绑定方法
直接把类库中的 boxtext 拖到要用的列里面,设定 currentcontrol 是刚加入的控件就行,不要 sparse = .f. !
然后参照 demo 表单 grid1.AfterRowColChange 代码



字怎么不见了,我不是设置了黑色吗

程序代码:
Local oCol as Column
For each m.oCol in This.Columns
    If m.oCol.ColumnOrder == m.nColIndex
        Exit
    EndIf
EndFor

If Upper(m.oCol.Name) == 'COLUMN2'        && 当前列是绑定 f2 字段的框框列
    *-- 自定义类 BoxText 设置的是透明背景,要显示背景色,必须改成不透明
    m.oCol.Box1.BackStyle = 1
    m.oCol.Box1.BackColor = Rgb(255,0,0)
    m.oCol.Box1.Text1.ForeColor = Rgb(0,0,0)
    m.oCol.Box1.Text1.FontBold = .t.
    *-- 显示背景色后, 原来的绿色的粗边框就不协调了, 边框厚度调整为 0
    m.oCol.Box1.BorderWidth = 0
EndIf



[此贴子已经被作者于2023-4-25 11:21编辑过]

2023-04-25 10:55
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:1 
谁知道呢,哈哈哈,这控件就随便弄的,没考虑太多,不知哪里冲突了
把 AfterRowColChange 里面的代码都注释掉,能显示字不?

外面的蓝色的线条把 grid 的 HighLightRow 设为 .F.
2023-04-25 11:29
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-25 11:29:17的发言:

谁知道呢,哈哈哈,这控件就随便弄的,没考虑太多,不知哪里冲突了
把 AfterRowColChange 里面的代码都注释掉,能显示字不?

外面的蓝色的线条把 grid 的 HighLightRow 设为 .F.

把 AfterRowColChange 里面的代码都注释掉,也不能显示
程序代码:
Local nRowHeight, nColWidth, nMagin, nTop, nWidth

m.nRowHeight = This.Parent.Parent.RowHeight
m.nColWidth  = This.Parent.Width

m.nMagin = This.BorderWidth
With This.Text1 as TextBox
    m.nTop = (m.nRowHeight - 2*m.nMagin - .Height) / 2
    m.nTop = Max(m.nMagin, m.nTop)
    m.nWidth = Max(0, m.nColWidth - 2*m.nMagin)
    .Move(m.nMagin+1, m.nTop+1, m.nWidth-1)
EndWith

This.Move(0, 0, m.nColWidth, m.nRowHeight)

Return This.BackStyle



程序代码:
Local oCol as Column

m.oCol = This.Parent

With This.Text1 as TextBox
    .ControlSource = m.oCol.ControlSource
    .Format = m.oCol.Format
    .InputMask = m.oCol.InputMask
    .Alignment = m.oCol.Alignment
    .FontName = m.oCol.FontName
    .FontSize = m.oCol.FontSize
    .FontBold = m.oCol.FontBold
    .Height = Fontmetric(1, .FontName, .FontSize, Iif(.FontBold, 'B', 'N'))&&是不是这里
EndWith

This.BackColor = 0xffffff


你看一下哪里有冲突

[此贴子已经被作者于2023-4-25 11:45编辑过]

2023-04-25 11:40
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:1 
不清楚你动了哪个不该动的地方,把你的表单发给我,上次说的邮箱是啥来着?
2023-04-25 11:45
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-25 11:45:15的发言:

不清楚你动了哪个不该动的地方,把你的表单发给我,上次说的邮箱是啥来着?

degidt@
2023-04-25 11:45
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:1 
看邮件
2023-04-25 11:48
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:1 
以下是引用hytizj023在2023-4-25 11:40:37的发言:
Local oCol as Column

m.oCol = This.Parent

With This.Text1 as TextBox
    .ControlSource = m.oCol.ControlSource
    .Format = m.oCol.Format
    .InputMask = m.oCol.InputMask
    .Alignment = m.oCol.Alignment
    .FontName = m.oCol.FontName
    .FontSize = m.oCol.FontSize
    .FontBold = m.oCol.FontBold
    .Height = Fontmetric(1, .FontName, .FontSize, Iif(.FontBold, 'B', 'N'))&&是不是这里
EndWith

This.BackColor = 0xffffff
你看一下哪里有冲突

这是 boxtext 类的代码,你没改这里吧,类里面代码不需要动的
2023-04-25 12:07
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:1 
想到一种可能,你的列 ControlSource 没手工设置,看看试机号这一列的 ControlSource 是不是空?

AfterRowColChange 事件中先加一行,能显示字再考虑加哪合适

If Upper(m.oCol.Name) == 'COLUMN2'        && 当前列是绑定 f2 字段的框框列

    m.oCol.Box1.Text1.ControlSource = m.oCol.ControlSource    && 暂时先加这

    ....
    ....
    ....
EndIf


[此贴子已经被作者于2023-4-25 12:16编辑过]

2023-04-25 12:10
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-25 11:48:19的发言:

看邮件

看到了,现在有点其他事情
2023-04-25 12:42
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-25 12:10:34的发言:

想到一种可能,你的列 ControlSource 没手工设置,看看试机号这一列的 ControlSource 是不是空?

AfterRowColChange 事件中先加一行,能显示字再考虑加哪合适

If Upper(m.oCol.Name) == 'COLUMN2'        && 当前列是绑定 f2 字段的框框列

    m.oCol.Box1.Text1.ControlSource = m.oCol.ControlSource    && 暂时先加这

    ....
    ....
    ....
EndIf


m.oCol.Box1.Text1.ControlSource = m.oCol.ControlSource&&完美解决,我不能绑定数据源,因为临时表很多

2023-04-25 13:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-512024-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047214 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved