Primero que nada felicitaciones por la forma clara en que planteaste tu problema, es algo que no se ve muy a menudo.
Para hacer lo que quieres podrías usar el evento BeforeDelete de la tabla Datos y comprobar todos los registros de la tabla Citas, eliminando los que coinciden:
Código Delphi
[-]procedure TForm1.DatosBeforeDelete(DataSet: TDataSet);
var cod,f:Integer;
begin
cod:= Datos.FieldByName('CODIGO').AsInteger;
Citas.First; while not Citas.Eof do begin
if Citas.FieldByName('CODE').AsInteger= cod then Citas.Delete else
Citas.Next; end;
end;
Espero te sea de ayuda. Saludos y suerte con tu programa.