Ich würde so vorgehen:
Es gibt eine Klasse TSchienenPlan, der eine Liste mit allen Gleis-Objekten enthält. (TObjectList hilft hier weiter)
TSchienenPlan hat eine Methode
PaintToCanvas():
Delphi-Quellcode:
procedure TSchienenPlan.PaintToCanvas(canvas:TCanvas);
var i : integer;
begin
DrawBackground(Canvas);
// alle Objekte zeichen
for i := 0 to Objectcount-1 do
objects[i].PaintToCanvas(Canvas);
end;
Dann sieht der Aufruf so aus:
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender:TObject);
begin
FSchienenPlan.PaintToCanvas(Paintbox1.Canvas);
end;