So, jetzt, ja, eine Insel.
Stimmt. Anders ist das ja gar nicht zu machen.
Ich hab jetzt auch nochmal den Weg eines Fangpunktes von der Berechnung zur
Gui und wieder zurück verfolgt (Wahnsinn, kenn mich in meinem eigenen Code fast schon wieder nicht aus). Hab aber gesehen, daß ich da noch n Bock drin hab, weil die
Gui daraus temporär (zur Anzeige) einen TPoint macht und den wieder (in mm umgerechnet) zurück an die Komponente liefert und genau das geht natürlich nicht. Das zerstört die Genauigkeit.
Ich werd jetzt zur Kommunikation von
Gui und Komponente einen neuen Typ einführen. Falls OwnerDraw ist der Punkt durch die Komponente berechnet worden (z.B. Fangpunkt), falls nicht dann kommt der Punkt vom User z.B. via MouseDown /MouseMove.
Delphi-Quellcode:
TCadFloatPoint = record
X1, Y1: integer; // CanvasPoint, OwnerDraw FALSE expected;
MMX1, MMY1: double; // MMComponentFloatPoint, OwnerDraw TRUE expected;
OwnerDraw: boolean;
procedure CanvasPointToComponentMMFloatPoint; // X1,Y1 TO MMX1,MMY1;
procedure MMComponentFloatPointToCanvasPoint;// OwnerDraw: MMX1,MMY1 TO X1,Y1;
procedure Clear;
end;