Hi uwewo,
das mit den Zeichenroutine ist eigentlich nicht so schwer. Deine Items werden ja schon richtig gezeichnet. Überschreibe die procedure Paint von TDateLine und schon werden alle Items dem aktuellen DateLine automatisch angepaßt.
Delphi-Quellcode:
procedure Paint; override;
...
procedure TDateLine.Paint;
begin
inherited;
DrawItems;
end;
somit werden deine Items immer mit verändert wenn TDateLine neu gezeichnet wird, egal warum. Dazu must du aber auch die Ermittlung der Dimensionen deines Item dynamisch regeln. Das würde so gehen.
- Alle Datums/Zeitangaben werden als property gehalten und deren Änderung löst ein Item.Redraw aus,
- Im Item.Redraw wird zuerst left, top usw. in Bezug auf das als Eigenschaft gehaltene FDateLine ermittelt,
- das Item wird mit den neuen Koordinaten im DateLine gezeichnet.
Die entscheidende Frage ist dann immer nur wer das Zeichnen übernimmt, DateLine oder das Item selbst.
Unter dem Strich berechnet jedes Item seine Koordinaten in Bezug auf TDateLine zum Zeitpunkt des Neuzeichnens selbst. Von Außen reicht dann lediglich ein Aufruf von Redraw oder Paint oder Invalidate....
Gruß oki