

1. 在DataSource中选择要显示的数据源
2。 在Columns中设置要显示的字段,列宽,别名,对齐等
获取当前行的指定字段的值,这里获取当前行linkaddr字段的值
ShowMessage(DBGrid2.DataSource.DataSet.FieldValues['linkaddr']);
获取选择记录的序号或者说DBgrid的行号
howMessage(IntToStr(DBGrid2.DataSource.DataSet.RecNo));
设置Hint提示
1. 在hint属性时输入要提示的内容
2. 还要给弹出提示的条件加入开启显示提示的代码,例在OnCellClick事件里加入DBGrid1.ShowHint:=True;
最优:
//窗体宽度改变后,将增加的宽度平均分配到各列,调用:FixDBGridColumnWidth(DBGrid2)
procedure FixDBGridColumnWidth2(const DBGrid: TDBGrid);
var
i: Integer;
cusWidth: Integer; //改变窗体大小后,数据表格宽度
varWidth: Integer; //每列宽度
totColumns: Integer; //用来存储总的列数
sumWidth:integer;
begin
totColumns := 0;
cusWidth := Abs(DBGrid.ClientWidth);
for i := 0 to -1 + DBGrid.Columns.Count do //该for循环计算总的列数
begin
Inc(totColumns);
end;
sumWidth:=0; //要赋初值,否则出错
for i:= 0 to DBGrid.columns.count-1 do //循环计算所有列的宽度
begin
sumWidth:= sumWidth+ DBGrid.columns[i].width;
end;
varWidth := (cusWidth-sumWidth) div totColumns;
if cusWidth>sumWidth then
begin
for i := 0 to DBGrid.columns.count-1 do
DBGrid.columns[i].width := DBGrid.columns[i].width + varWidth;
end;
end;
//根据内容自动调整DBGrid列宽的过程,要求先绑定数据集才能调用,还有列字段的顺序必须同数据库表的字段的顺序对应,
//MakeDBGridColumnsAutoFixItsWidth(DBGrid1))
procedure MakeDBGridColumnsAutoFixItsWidth(objDBGrid:TDBGrid);
var
cc:integer;
i,tmpLength:integer;
objDataSet:TDataSet;
aDgCLength:array of integer;
begin
cc:=objDbGrid.Columns.Count-1; //获取栏目数
objDataSet:=objDbGrid.DataSource.DataSet; //指定数据源为形参的数据源
setlength(aDgCLength,cc+1); //设置数组aDgCLength的个数
for i:=0 to cc do
begin
aDgCLength[i]:= length(objDbGrid.Columns[i].Title.Caption);
end;
objDataSet.First; //移动到第一条数据
while not objDataSet.Eof do //遍历所有数据行计算每个字段的长度将最大长度存储到aDgClentgh数组中
begin
for i:=0 to cc do
begin
tmpLength:=length(objDataSet.Fields.Fields[i].AsString);
if tmpLength>aDgCLength[i]
then aDgCLength[i]:=tmpLength;
end;
objDataSet.Next;
end;
for i:=0 to cc do //根据aDgCLentgh中的最大长度设置第列的宽度
begin
objDbGrid.Columns[i].Width:=aDgCLength[i]*7; //默认表格中1字符的宽度为7像素
end;
end;
//平均分配各列的宽度过程,调用:FixDBGridColumnWidth(DBGrid2)
procedure FixDBGridColumnWidth(const DBGrid: TDBGrid);
var
i: Integer;
cusWidth: Integer; //改变窗体大小后,数据表格宽度
varWidth: Integer; //每列宽度
totColumns: Integer;
begin
totColumns := 0;
cusWidth := Abs(DBGrid.ClientWidth);
for i := 0 to -1 + DBGrid.Columns.Count do
begin
Inc(totColumns);
end;
varWidth := cusWidth div totColumns;
for i := 0 to DBGrid.Columns.Count - 1 do
begin
if i = DBGrid.Columns.Count - 1 then
begin
DBGrid.Columns[i].Width := varWidth - 16;
end
else
begin
DBGrid.Columns[i].Width := varWidth;
end;
end;
end;
//将最后一列宽度设为最宽,调用:FixDBGridColumnWidth(DBGrid2)
procedure FixDBGridColumnWidth2(const DBGrid: TDBGrid);
var
i: Integer;
cusWidth: Integer; //改变窗体大小后,数据表格宽度
varWidth: Integer; //每列宽度
totColumns: Integer; //用来存储总的列数
sumWidth:integer;
begin
totColumns := 0;
cusWidth := Abs(DBGrid.ClientWidth);
for i := 0 to -1 + DBGrid.Columns.Count do //该for循环计算总的列数
begin
Inc(totColumns);
end;
varWidth := cusWidth div totColumns;
for i:= 0 to DBGrid.columns.count-1 do
begin
sumWidth:= sumWidth+ DBGrid.columns[i].width;
end
if cusWidth>sumWidth then
begin
for i := 0 to DBGrid.columns.count-1 do
DBGrid.columns[i].width := DBGrid.columns[i].width+ (cusWidth-sumWidth) div totColumns;
end;
end;