Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Kreis/Linie zwischen 2 TButtons

  Alt 5. Okt 2020, 14:10
Hallo,

ich brauche beruflich immer mal wieder Stammbäume.

Zu diesem Zweck habe ich mir ein Control TPerson gebastelt, abgeleitet von TBitBtn . Darin sind zur Laufzeit jeweils die Personendaten enthalten. Diese Personen/Buttons kann ich wiederum in einer TScrollBox mit der Maus frei verschieben. Vielleicht ginge das eleganter. Aber als Hobbyprogrammierer fiel mir nichts besseres ein.
Ich habe den Code nun nach Jahren mal wieder vorgekramt.

Mein Ziel wäre es jetzt, zwischen den Buttons in Abhängigkeit der Verwandtschaft Linien zu ziehen. Zwischen 2 Verheirateten TPersons hätte ich gern einen Kreis.

Jetzt haben ich schon folgenden Code entdeckt, womit das grundsätzlich klappt:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
   Canvas.Pen.Style:= psSolid;
   Canvas.Pen.Color:= clBlue;
   Canvas.Pen.Width:= 1;

   Canvas.MoveTo(Button1.Left + (Button1.Width div 2),
                 Button1.Top + (Button1.Height div 2));
   Canvas.LineTo(Button2.Left + (Button2.Width div 2),
                 Button2.Top + (Button2.Height div 2));
end;
Allerdings muss ich auf Änderungen reagieren. Soll heißen:
Wenn eine TPerson verschoben wird, muss die alte Linie/der alte Kreis weg und eine neue gemalt werden (auch hier).

Gibt es da Möglichkeiten/Ideen, ohne dass ich meinen Code vollständig neu programmieren muss?

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat