关于stringgrid(100分)

  • 主题发起人 主题发起人 ddn-star
  • 开始时间 开始时间
D

ddn-star

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何用stringgrid来处理数据库显示问题
比如:库中用100个字段,用500条记录
请问如何写这个循环?
 
大家为什么没有回答的,是不是太小儿科了
别啊、
求大家回答一下,帮帮我(本来用惯了DBGRID的)
 
一条一条写就是了。
 
假设有七个字段,则首先设置Colcount属性为7。
然后分为如下几步:
1、加标题,控制列距离:
procedure init_grid(sgrid:Tstringgrid);
begin
with sgrid do
begin
ColWidths[0] := 50;
ColWidths[1] := 350;
ColWidths[2] := 70;
ColWidths[3] := 30;
ColWidths[4] := 115;
ColWidths[5] := 50;
ColWidths[6] := 50;

Cells[0,0] := '序号';
Cells[1,0] := '标题';
Cells[2,0] := '来自';
Cells[3,0] := '分数';
Cells[4,0] := '最后回复时间';
Cells[5,0] := '回复次数';
Cells[6,0] := '状态';
end;
end;

2、清空数据:
procedure Clear_grid(sgrid:Tstringgrid);
begin
with sgrid do
begin
RowCount := 2;
FixedRows := 1;
Cells[0,1] := '';
Cells[1,1] := '';
Cells[2,1] := '';
Cells[3,1] := '';
Cells[4,1] := '';
Cells[5,1] := '';
Cells[6,1] := '';
end;
sgrid.TopRow := 1;
init_grid(sgrid);
sgrid.update;
end;

3、填充数据:
procedure Fill_grid(query1:Tquery;sgrid:Tstringgrid);
var LastRow,i1:integer;
begin
if not query1.active then abort;
query1.first;
i1:=0;
while not query1.eof do
begin
inc(i1);
Cells[0,i1] := DSLocal.Fields[0].value;
Cells[1,i1] := DSLocal.Fields[1].value;
Cells[2,i1] := DSLocal.Fields[2].value;
Cells[3,i1] := DSLocal.Fields[3].value;
Cells[4,i1] := DSLocal.Fields[4].value;
Cells[5,i1] := DSLocal.Fields[5].value;
Cells[6,i1] := DSLocal.Fields[6].value;
query1.next;
end;
sgrid.update;
end;
 
给你一个完整的例子,在我的系统中使用,标准&通用&完整!给分吧
with adoquery11 do
...
open;
stringgrid1.rowcount:=Recordcount+1;
stringgrid1.ColCount:=FieldCount;
for i:=0 to stringgrid1.colcount-1 do
begin
stringgrid1.ColWidths:=length(Fields.AsString)*15;
stringgrid1.Cells[i,0]:=Fields.DisplayName ;
end;
for j:=1 to stringgrid1.rowcount do
begin
for i:=0 to stringgrid1.ColCount-1 do
stringgrid1.Cells[i,j]:=Fields.AsString;
next;
end;
first;
close;
end;
 
接受答案了.
 
后退
顶部