for i:=0 to stringgrid1.rowcount-1 do for j:=0 to stringgrid1.colcount-1 do stringgrid1.cells[j,i]:='';
var row,col:integer; begin row:=0; col:=0; while row<=stringgrid.rowcount do begin if col<=query.fields.count then begin stringgrid.cells[col,row]:=''; inc(col); end; inc(row); end; end; 试试
for j:=1 to 250 do begin getmem(pbuffer,512); TPF_GetSummary(hselect,pBuffer,j,tmpstr,512) ; form1.StringGrid1.Rows[j].Clear ; form1.StringGrid1.Rows[j].Append('') ; form1.StringGrid1.Rows[j].Add (INTtostr(j)); form1.StringGrid1.Rows[j].Add ('BBB'+inttostr(j)); form1.StringGrid1.Rows[j].Add (StrPas(pBuffer)); //freemem(pbuffer); //itmx.SubItems.Add(); end; 如果这样的话清空后直接赋值,可以少一个循环,但是每个循环的次数不一样,这样会造成多出上次循环记录的现象。如果在循环赋值之前先来个大循环清空,我总觉得很浪费啊
stringgrid1.rows[I].clear;
作个双重循环来设置Cells【x,y】=‘’。
for j:=0 to stringgrid1.colcount-1 do
stringgrid1.cells[j,i]:='';
row,col:integer;
begin
row:=0;
col:=0;
while row<=stringgrid.rowcount do
begin
if col<=query.fields.count then
begin
stringgrid.cells[col,row]:='';
inc(col);
end;
inc(row);
end;
end;
试试
getmem(pbuffer,512);
TPF_GetSummary(hselect,pBuffer,j,tmpstr,512) ;
form1.StringGrid1.Rows[j].Clear ;
form1.StringGrid1.Rows[j].Append('') ;
form1.StringGrid1.Rows[j].Add (INTtostr(j));
form1.StringGrid1.Rows[j].Add ('BBB'+inttostr(j));
form1.StringGrid1.Rows[j].Add (StrPas(pBuffer));
//freemem(pbuffer);
//itmx.SubItems.Add();
end;
如果这样的话清空后直接赋值,可以少一个循环,但是每个循环的次数不一样,这样会造成多出上次循环记录的现象。如果在循环赋值之前先来个大循环清空,我总觉得很浪费啊