关于DBGrid的问题,谢谢各位高手了,急!!!!!!!!!!! 其实问题很简单,就是使dbgrid的每一列长度刚好等于该列中最长的字符串的长度,简单吧!!!!!本人想了N种方法都不行,包括查看VCL源码等各种方法。各位高手,高手,高高手,谢谢了!!!!!!!!如果能帮我发到 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 顶一下.偶也很需要这个.麻烦高手有源码地也给偶发一份[email protected] 先调用一个查询语句SELECT Max(Len(C1)) AS Length FROM Table WHERE ....然后设置一下列的最大长度,然后再查询记录 所有字段 SELECT Max(Len(C1)) AS Length01 ,Max(Len(2)) AS Length02,Max(Len(C3)) AS Length03 FROM Table WHERE .... procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);var Str: String; ColWidth, Index, TextWidth: Integer;begin Str := Field.Value; Index := Field.Index; ColWidth := DBGrid1.Columns.Items[Index].Width; TextWidth := DBGrid1.Canvas.TextWidth(Str); if TextWidth >= ColWidth then DBGrid1.Columns.Items[Index].Width := TextWidth + 4;end;procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);var I: Integer;begin for I := 0 to DBGrid1.Columns.Count - 1 do begin DBGrid1.Columns[I].Width := 10; end;end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);var Str: String; ColWidth, TextWidth: Integer;begin Str := Column.DisplayName; ColWidth := Column.Width; TextWidth := DBGrid1.Canvas.TextWidth(Str); if TextWidth >= ColWidth then Column.Width := TextWidth + 4;end;这是对标题的处理楼主可能想复杂了^_^ 修罗 的方法好,可以极大的发挥CPU的功效 :) 连TDBGrid本身连接的数据都是这样写出来的^_^ 用Ehlib控件组 的 DBGridEh 控件 ,用 3.0 以上版本的,轻松搞定,不需要编写一行代码。 to WGYKING(修罗是谁?!) 感谢WGYKING(修罗是谁?!) ,你的代码让我.........原来如此EASY。不过把它做成PROC/FUN形式后会更适用一点 考虑下修改dbgird的事件。我正想着手改。 这个就很容易了自己继承TDBGrid覆盖一下DrawDataCellDrawColumnCell就可以了呵呵 谁有日期大小写转换的函数 请大侠帮忙! 请教midas的问题 关于编写类的菜鸟问题,急! DELPHI程序员请进. 请问哪位高手用过DBChart?有关它的数据源的问题 散分啦,dbedit的问题!!! 请问怎样实现excel和数据库的互相关联的问题 ★★★什么是“堆”?相对于栈来说的。我给分。谢谢 怎么才算delphi高手 Adostoredproc怎样动态使用? 对于一个大型的应用系统, 有很多功能, 是作在一个程序中好, 还是将这些功能做成一个个exe呢 ?
[email protected]
然后设置一下列的最大长度,然后再查询记录
Field: TField; State: TGridDrawState);
var
Str: String;
ColWidth, Index, TextWidth: Integer;
begin
Str := Field.Value;
Index := Field.Index;
ColWidth := DBGrid1.Columns.Items[Index].Width; TextWidth := DBGrid1.Canvas.TextWidth(Str);
if TextWidth >= ColWidth then
DBGrid1.Columns.Items[Index].Width := TextWidth + 4;
end;procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
var
I: Integer;
begin
for I := 0 to DBGrid1.Columns.Count - 1 do begin
DBGrid1.Columns[I].Width := 10;
end;
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Str: String;
ColWidth, TextWidth: Integer;
begin
Str := Column.DisplayName;
ColWidth := Column.Width; TextWidth := DBGrid1.Canvas.TextWidth(Str);
if TextWidth >= ColWidth then
Column.Width := TextWidth + 4;
end;
这是对标题的处理楼主可能想复杂了
^_^
感谢WGYKING(修罗是谁?!) ,你的代码让我.........原来如此EASY。不过把它做成PROC/FUN形式后会更适用一点
自己继承TDBGrid覆盖一下
DrawDataCell
DrawColumnCell就可以了
呵呵