Die saubere Lösung ist eine konsequente Trennung der Daten von der Oberfläche. Also eine dritte
Unit mit einer eigenen Klasse, die die Datenverwaltung übernimmt.
Ansonsten ginge auch eine Übergabe der zu bearbeitenden Daten als Referenz. Das ist zwar nicht ganz so schön, aber immer noch eine saubere Lösung.
Ein direkter gegenseitiger Zugriff wäre auch möglich, aber das wäre unübersichtlich und das Gegenteil von gutem Code. Denn man kann die erste
Unit in der zweiten einfach unterhalb von implementation in die uses legen. (Ich hoffe ich habe dich jetzt nicht auf dumme Gedanken gebracht, das ist keine gute Lösung...)
// EDIT:
WM_COPYDATA? Wozu das? Man kann doch einfach die Referenz auf die Daten benutzen, es ist doch der selbe Prozess usw.