Einzelnen Beitrag anzeigen

sarte

Registriert seit: 23. Mai 2008
Ort: Australien
66 Beiträge
 
Delphi 7 Enterprise
 
#1

Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'

  Alt 25. Jan 2010, 21:31
Hallo Leute,
ich hab schon danach gegoogle aber keine für mich passende Lösung gefunden.
Ich hoffe ihr könnt mir schnell helfen.
Hab 3 Units:
1. die Form
2. Klasse TDiagramm
3. Koordinaten für Canvas TPunkt

Hab jetzt gedacht, dass ich einfach eine Privatevariable "Canvas: TCanvas;" erstelle bei TForm, die auch noch Create
und dann dem Constructor von TDiagramm überliefere, damit er dann die Methoden von Canvas hat und dann auch noch auf der Form
malen kann.
So sieht es ungefähr aus:

Delphi-Quellcode:
--------------Unit1---------------------------
procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  Canvas := TCanvas.Create;
  Diagramm := TDiagramm.Create(Canvas);

  Diagramm.Zeichnen(Punkte,clRed); //Punkte ist nur ein Array vom Typ TPunkt, ist nicht wichtig...
end;
--------------Unit 2---------------------------
constructor TDiagramm.Create(UserCanvas:TCanvas);
begin
    inherited Create;
    Canvas := UserCanvas; // Privatevariable Canvas: TCanvas;
end;

procedure TDiagramm.Zeichnen(Daten:array of TPunkt;Color:TColor);
var I:Integer;
begin
    Canvas.Pen.Color := Color;
    Canvas.Pen.Width := 1;
    Canvas.MoveTo(Daten[0].X,Daten[0].Y); {Und hier kommt es zum Fehler:
    "Im Projekt XX.exe ist eine Exception der Klasse EInvalidOperation mit der Meldung 'Leinwand/Bild erlaubt kein Zeichnen' aufgetreten."}

    for I := 1 to high(Daten) do
    begin
      Canvas.LineTo(Daten[I].X,Daten[I].Y);
    end;
end;
Tut mir leid, dass ich soviel code einbringe, ich hoffe ihr könnt mein Problem folgen und am Ende entdecken
Das wäre toll

Danke schonmal
  Mit Zitat antworten Zitat