This depends on what is needed of each unit. In certain cases, you can move units to the uses
clause at the beginning of your implementation
section (as opposed to the beginning of your interface
). But that all depends on what is needed.
Whenever you consider moving units to the implementation
section, you should always ask yourself why you should have to do so. Usually cross-referencing units can lead to an overload of dependencies, and kinda defeats the purpose of creating self-contained units. For example, if you put code in a separate unit than your main form, there should be no reason that unit should refer back to the main form.