初学者,谢谢

阿 元 2018-07-24 04:24:31
mDBGrid.Columns[I].Field.Tag,这个语句的返回值是列中内容的宽度吗?如果不是,那是什么?谢谢!
...全文
360 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2018-08-22
  • 打赏
  • 举报
回复
控件都有一个Tag,它是提供给编程用户,在使用时的一个参数值,它是随控件约定的。
默认值 是0.
比如:
Top值
Withe值
序号,等待
一旬话,它是编程用户,保存在控件中的一个参数值。
weixin_38409885 2018-08-21
  • 打赏
  • 举报
回复
参考这个:https://blog.csdn.net/danfeng906/article/details/43235439
weixin_38409885 2018-08-21
  • 打赏
  • 举报
回复
Tag 一般作为自定义索引使用。
三顾茅房 2018-08-01
  • 打赏
  • 举报
回复
自动宽度是否根据列文字的最大宽度定义的?如果是的话,函数的使用应当是在文字加载完毕后再调用
秋天之落叶 2018-07-25
  • 打赏
  • 举报
回复
就像mOffset: Integer = 5一样,tag要想有个值,必须赋给它才行,你能找到比较全的代码才能看到。
我不喜欢很复杂的代码,太乱,能简单就简单:
// 宽度自适应
eh.AutoFitColWidths := False;
for l := 0 to eh.Columns.Count - 1 do
begin
eh.Columns[l].OptimizeWidth;
eh.Columns[l].Alignment := taCenter;
end;
效果也不错啊,当然,这是用的DBGRIDEH表格。
秋天之落叶 2018-07-25
  • 打赏
  • 举报
回复
这只是一个函数,应用的一个部分。
如果我理解的不错,tag在其他地方肯定有赋值,否则他永远是一个0值。
你自己做个测试就知道了:
ShowMessage(DBGrid1.columns[1].Field.Tag.ToString);
阿 元 2018-07-25
  • 打赏
  • 举报
回复
引用 5 楼 leavesguth 的回复:
[quote=引用 4 楼 qq_41092628 的回复:]
mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
原句是这样的,列的宽度取列标题的宽度和列中mDBGrid.Columns[I].Field.Tag的最大值+ mOffset
mDBGrid.Columns[I].Field.Tag的值是什么

tag应该是一个已经定义的宽度值,你再找找,应该其他地方有赋值,或者属性里直接写了值。
max取值里面两个值最大的值,tag的定义值和caption的宽度谁最大就取谁,再加一个定义值mOffset。
好像搞得有点复杂,不知道有什么意义。[/quote]

function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 5): Boolean;
{ 返回数据网格自动适应宽度是否成功 }
var
I: Integer;
begin
Result := False;
if not Assigned(mDBGrid) then Exit;
if not Assigned(mDBGrid.DataSource) then Exit;
if not Assigned(mDBGrid.DataSource.DataSet) then Exit;
if not mDBGrid.DataSource.DataSet.Active then Exit;
for I := 0 to mDBGrid.Columns.Count - 1 do
begin
if not mDBGrid.Columns[I].Visible then Continue;
if Assigned(mDBGrid.Columns[I].Field) then
mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
else
mDBGrid.Columns[I].Width :=
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset;
mDBGrid.Refresh;
end;
Result := True;
end;
秋天之落叶 2018-07-25
  • 打赏
  • 举报
回复
引用 4 楼 qq_41092628 的回复:
mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
原句是这样的,列的宽度取列标题的宽度和列中mDBGrid.Columns[I].Field.Tag的最大值+ mOffset
mDBGrid.Columns[I].Field.Tag的值是什么

tag应该是一个已经定义的宽度值,你再找找,应该其他地方有赋值,或者属性里直接写了值。
max取值里面两个值最大的值,tag的定义值和caption的宽度谁最大就取谁,再加一个定义值mOffset。
好像搞得有点复杂,不知道有什么意义。
阿 元 2018-07-25
  • 打赏
  • 举报
回复
引用 3 楼 qq_41092628 的回复:
[quote=引用 2 楼 leavesguth 的回复:]
tag是一个自定义值,你自己想定义什么就是什么



mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
原句是这样的,列的宽度取列标题的宽度和列中mDBGrid.Columns[I].Field.Tag的最大值+ mOffset
[/quote]

mDBGrid.Columns[I].Field.Tag的值是什么
阿 元 2018-07-25
  • 打赏
  • 举报
回复
引用 2 楼 leavesguth 的回复:
tag是一个自定义值,你自己想定义什么就是什么



mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
原句是这样的,列的宽度取列标题的宽度和列中mDBGrid.Columns[I].Field.Tag的最大值+ mOffset
秋天之落叶 2018-07-25
  • 打赏
  • 举报
回复
tag是一个自定义值,你自己想定义什么就是什么
秋天之落叶 2018-07-25
  • 打赏
  • 举报
回复
DBGrid1.columns[i].Width

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧