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