关于DBGrid问题求解

u010629734 2013-05-09 12:11:29
DBGrid的第一行作为Tittle,可是第一行有些列的列名太长了,在固定宽度下显示不完整,大家有没有什么办法在一格中能够显示很长的内容啊?比如 单元格内 分行显示,我不知道这要怎么实现,有经验的朋友告知下吧。
...全文
129 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
随行的太阳 2013-05-09
  • 打赏
  • 举报
回复
酣酣 2013-05-09
  • 打赏
  • 举报
回复
换成CxGrid吧! 普通DBGrid好像用得不是太多!
feiba7288 2013-05-09
  • 打赏
  • 举报
回复
在SQL中将过长的字符串换成回车的形式,然后用下面的函数自动调整列宽试下。

function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 15): 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;
    DBGridRecordSize(mdbgrid.Columns[i]);
    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;
    //  Application.ProcessMessages;
  end;
  Result := True;
end; { DBGridAutoSize }

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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