Es wäre ein grosser Fehler, wenn Form2 selbst "persönlich" auf Form1 etwas zeichnet:
Delphi-Quellcode:
procedure TForm2.bla(...);
begin
Form1.Image1.Canvas.TextOut(...xyz...);
end;
Jedes Formular hat seinen eigenen
Verantwortungsbereich und dazu gehört, dass niemand anderes auf dem Formular herumzumalen hat.
Aber Form2 kann das Zeichnen an Form1 delegieren:
Delphi-Quellcode:
procedure TForm2.bla(...);
begin
Form1.ZeichneRechteckMitBeschriftung(...xyz...);
end;
Das hat folgende Vorteile:
1.) Form1 kann jederzeit geändert werden (z.B. Umbenennung von Komponenten, Austausch von Image1 durch eine Paintbox oder wasauchimmer)
2.) verringerte Abhängigkeiten
3.) es wird expliziert gemacht, was der Code eigentlich tun soll
4.) verbesserte Testbarkeit. Man kann einfach einen Testbutton auf Form1 legen und die Methode
ZeichneRechteckMitBeschriftung() aufrufen. Dann der Code so lange verbessern, bis alles wie gewünscht funktioniert.
Danach dürfte es keine Probleme mehr geben, wenn diese Methode von einem anderen Formular aufgerufen wird.