Einzelnen Beitrag anzeigen

bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

Analyse : object locked error

  Alt 24. Nov 2020, 15:49
der Demo-code funktioniert fehlerfrei ....
allerdings wenn ich die Funktion DoPaintTest(var PaintBMP: TBitmap); in eine
andere Klasse kopiere liefert diese Funktione den object locked error .... (siehe screen dump)
wie kann das sein, es gibt doch überhaupt keine Interaction mit der Klasse ??????




Delphi-Quellcode:
type TPaintLayout2 = class
          procedure DoPaintTest(var PaintBMP: TBitmap);
end;



procedure TPaintLayout2.DoPaintTest(var PaintBMP: TBitmap);
var
  p1, p2: TPointF;
  i, j: Integer;
  Brush: TStrokeBrush;

begin

  PaintBMP.Width := 1000;
  PaintBMP.Height := 1000;

  for i := 1 to 100 do
  begin

    Brush := TStrokeBrush.Create(TBrushKind.Solid, randomColor);
    Brush.Thickness := 2;
    // Brush.Kind := Solid;
    p1 := TPointF.Create(2, 2);
    p2 := TPointF.Create(Random(400), Random(400));

    PaintBMP.Canvas.BeginScene;

    // draw lines on the canvas

    PaintBMP.Canvas.DrawLine(p1, p2, 1, Brush);

    PaintBMP.Canvas.EndScene; // in dieser Zeile kommt es zum Object lock error

    Brush.Free;

  end

end;

///
/// somewhere inside the main app
///
.......


var
  aPaintLayoutCTRL: TPaintLayout2;
  aBMP: TBitmap;
begin
  aBMP := TBitmap.Create;
  aPaintLayoutCTRL := TPaintLayout2.Create;
  try
    aPaintLayoutCTRL.DoPaintTest(aBMP);

    imgviewer_layout.Bitmap.Assign(aBMP) ;

  finally
    aPaintLayoutCTRL.Free;
    aBMP.Free;
  end;
Miniaturansicht angehängter Grafiken
object_locked.png  

Geändert von bernhard_LA (24. Nov 2020 um 15:53 Uhr)
  Mit Zitat antworten Zitat