to tikkypeng:怎么我按你第一答案那样写了却不行, 出错提示为: Access violation at address oo4A3665 in module 'abc.exe',Read ofaddress ffffffff
var i:Integer; begin for i:=0 to DBGrid1.Columns.Count-1 do begin DBGrid1.Columns[i].Width := 120; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=0 to DBGrid1.Columns.Count do begin DBGrid1.Columns[i].Width:=DEPT1.Width div DBGrid1.Columns.Count; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=0 to DBGrid1.Columns.Count-1 do//越界了~~~ begin DBGrid1.Columns[i].Width:=DEPT1.Width div DBGrid1.Columns.Count; end; end; 顺便问一下~~你的Dept1是什么??
你的columns是不是设计状态下就增加好的??? 如果不是~~~ 那么则要把procedure TForm1.FormShow(Sender: TObject); var i:Integer; begin for i:=0 to DBGrid1.Columns.Count-1 do begin DBGrid1.Columns[i].Width := Button4.Width div DBGrid1.Columns.Count; end; end;这段代码放到你的Query或者Table的OPen之后~~
DBGrid1.DataSource.DataSet.FieldByName('aaa').AsString;
就是当前选中的记录的aaa字段的值
Access violation at address oo4A3665 in module 'abc.exe',Read ofaddress ffffffff
i:Integer;
begin
for i:=0 to DBGrid1.Columns.Count-1 do
begin
DBGrid1.Columns[i].Width := 120;
end;
end;
var i:integer;
begin
for i:=0 to DBGrid1.Columns.Count do
begin
DBGrid1.Columns[i].Width:=DEPT1.Width div DBGrid1.Columns.Count;
end;
end;
var i:integer;
begin
for i:=0 to DBGrid1.Columns.Count-1 do//越界了~~~
begin
DBGrid1.Columns[i].Width:=DEPT1.Width div DBGrid1.Columns.Count;
end;
end; 顺便问一下~~你的Dept1是什么??
还有第一个问题,有什么办法可以动态指定字段的名字,因为我要取得当前选中的那一格的值,如果按你的方法做,只能取得一个固定字段的值,而不当前选中那个字段的值
如果不是~~~
那么则要把procedure TForm1.FormShow(Sender: TObject);
var
i:Integer;
begin
for i:=0 to DBGrid1.Columns.Count-1 do
begin
DBGrid1.Columns[i].Width := Button4.Width div DBGrid1.Columns.Count;
end;
end;这段代码放到你的Query或者Table的OPen之后~~
你先把宽度写死了~~120试试