Also ich benutzte CPU listing.
Problem ist in diese Funktion: TCanvas.RequiredState
Google kann helfen. Auch in Delphi Code gibt es Bugs:
http://qc.codegear.com/wc/qcmain.aspx?d=5132
Aber dieser Bug hilft nicht.
Dann habe ich diese Procedure gefixt (in Graphics.pas):
Es funkcioniert sehr gut, aber ich muss noch ein paar Teste machen.
OLD PROCEDURE
Delphi-Quellcode:
procedure TCanvas.RequiredState(ReqState: TCanvasState);
var
NeededState: TCanvasState;
begin
NeededState := ReqState - State;
if NeededState <> [] then
begin
if csHandleValid in NeededState then
begin
CreateHandle;
if FHandle = 0 then
raise EInvalidOperation.CreateRes(@SNoCanvasHandle);
end;
if csFontValid in NeededState then CreateFont;
if csPenValid in NeededState then CreatePen;
if csBrushValid in NeededState then CreateBrush;
State := State + NeededState;
end;
end;
NEW PROCEDURE
Delphi-Quellcode:
procedure TCanvas.RequiredState(ReqState: TCanvasState);
var
NeededState: TCanvasState;
begin
NeededState := ReqState - State;
if NeededState <> [] then
begin
if csHandleValid in NeededState then
begin
CreateHandle;
if FHandle = 0 then exit; //// ---- CHANGED LINE
// raise EInvalidOperation.CreateRes(@SNoCanvasHandle); ////---- LINE SKIPPED
end;
if csFontValid in NeededState then CreateFont;
if csPenValid in NeededState then CreatePen;
if csBrushValid in NeededState then CreateBrush;
State := State + NeededState;
end;
end;
[edit=Admin]Delphi-Tags ergänzt. Künftig bitte selber machen, danke. Mfg, Daniel[/edit]