Führ eine Abstraktionsebene ein. Du brauchst ein graphisches Objekt, dass sich zeichnet und der Zeichenfläche Andockpunkte zur Verfügung stellt:
Delphi-Quellcode:
TDrawObj = class(TObject)
procedure Paint(c: TCanvas); dynamic;
end;
Ich habe mir hierfür allerdings ein TScaledCanvas gemacht, dem ich Maße direkt in cm angeben kann, was dann auf die zur Verfügung stehende Größe skaliert wird.
Deine Objekte müssen wissen, was sie sind, ein Schalter, ein Verteiler etc....
Dann definierst Du Dir einen Andockpunkt, der eigentlich nur aus Koordinaten besteht, außerdem eine Liste von anderen Andockpunkten, mit denen dieser verbunden ist. Dein Verteiler hat dann ein paar Andockpunkte, und wenn du ein anderes Objekt andockst, werden die Andockpunkte miteinander verheiratet...
War das halbwegs verständlich?