如题目: 我现在 是做了一个循环
for i :=0 to List.cout -1 do
begin
Stringlist .Cell[4,i] := ObjectList.Buybook[i-1].Money;
Stringlist .Cell[5,i] := ObjectList.Buybook[i-1].bookNum; end;这样的话,如果数量20万,需要很长时间才能 填充完毕,有没有更快的版本 填充?
for i :=0 to List.cout -1 do
begin
Stringlist .Cell[4,i] := ObjectList.Buybook[i-1].Money;
Stringlist .Cell[5,i] := ObjectList.Buybook[i-1].bookNum; end;这样的话,如果数量20万,需要很长时间才能 填充完毕,有没有更快的版本 填充?
解决方案 »
- 求助:关于Delphi2007中Aero效果“GlassFrame”的问题
- 人民币收购代码。行的进来看看。
- 调用C#写的Web服务, 怎么老是出现错误
- 急!急!急!求教一个SocketConnection的问题.
- 新手问题~ 怎么理解“断点”这个词?实在摸不着头脑
- 关于ADOTABLE字段的添加问题
- 关于chart
- 这段代码怎么写?
- 请问fast report for delphi6 的正式版有下载的吗?
- 如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form
- 关于delphi idhttp post 与JSP 通信的问题
- 简体XP系统开发的软件能否在繁体机器上正常运行
好像只有循环导入,谁有更快的方法,我也很想知道
BmpGrid:TBitMap;//防止重绘时闪烁procedure TfrmFixIE.FormCreate(Sender: TObject);
begin
...
BmpGrid := TBitmap.Create;
...
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
ACanvas: TCanvas;
ARect, R: TRect;
Text: string;
begin
if (ACol = 4) or (ACol = 5) then
try
ARect := Rect;
OffsetRect(ARect, -ARect.Left, -ARect.Top);
BmpGrid.Width := ARect.Right;
BmpGrid.Height := ARect.Bottom;
ACanvas := BmpGrid.Canvas;
ACanvas.Font := Font;
ACanvas.Brush.Color := clWhite;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(ARect);
if gdSelected in State then
begin //选中时处理
ACanvas.Brush.Color := clBlue; // $00F9F7F6;
ACanvas.FillRect(ARect);
ACanvas.Brush.Style := bsClear;
ACanvas.Font.Color := clWhite;
end
else if ARow mod 2 = 0 then
begin
ACanvas.Font.Color := clBlack;
ACanvas.Brush.Color := $00F0FFFF; // $00F9F7F6;
ACanvas.FillRect(ARect);
end
else
begin
ACanvas.Font.Color := clBlack;
ACanvas.Brush.Color := clWhite;
ACanvas.FillRect(ARect);
end; case ACol of
4: Text := ObjectList.Buybook[ACol-1].Money; ;
5: Text := ObjectList.Buybook[ACol-1].bookNum;
end;
r:=ARect ;
DrawText(
ACanvas.Handle,
PCHAR(Text),
Length(Text),
r,
DT_SINGLELINE or DT_END_ELLIPSIS or DT_LEFT or DT_VCENTER);
finally
TStringGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top, BmpGrid);
end;
end;以上代码你直接引用就可以用了
1、先设好StringGrid的RowCount
2、循环前beginupdate或lock——不知道stringgrid有没有这样的函数,或者先隐藏看看是不是能快