Search code examples
delphidatamodule

Why would a module be unsavable until another module is loaded?


Most of the units I work on rely on a Data Module. One of the most annoying things I come accross is an error message telling me

Module X references another module and cannot be saved until Module Y is loaded.

Now, I'm sure there is a very good reason why CheckNoFixups raises this error while trying to WriteRootStream, and fails to save what is in effect a Text file (and hopefully this isn't followed by Catastrophic Failure where I must then restart the IDE while still unable to save my work.) but what is the good reason?

Why am I unable to click save without opening anothing text file containing various functions and objects much like any other unit? whats so special about a DataModule that means I can't save the source I'm working on until it's open, why aren't the 45 other units in the uses clause so important they must be open?

EDIT: It's Delphi 2007

the Declaration of the DataModule is :

unit DataMD;

TRepDataMod = class(TDataModule)
...
var
  RepDataMod: TRepDataMod;

Solution

  • If the DataModule is not part of the opened project the data aware objects in your form that reference the DataModule, cannot verify their reference and I think therefore the message comes up.

    I only seen this message when I was porting an older project to a new Delphi version or were migrating to a new set of database components. In normal circumstances I haven't encountered this message.

    In earlier versions I haven't seen the message and the form/unit could be saved, but the references that were in your dfm were magicly deleted.