[Lazarus] Is it meaningful or possible to change the visibility or the properties and events in a form or datamodule, ie make the private or protected?

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Fri Mar 23 15:15:39 CET 2012



On Fri, 23 Mar 2012, Michael Fuchs wrote:

> Am 23.03.2012 14:55, schrieb Frank Church:
>> [...]  I'd prefer to look only at the public section and say, Oh,
>> this is what it does for the program's other modules. Whatever isn't
>> there is not relevant to the rest of the application.
>> 
>> I understand that it comes from a Delphi legacy as RAD tool dating
>> from a time when the principles underlying object orientation had not
>> properly sunk in. [...]
>
> You can already do this by changing the way you are programming. Just write a 
> class which only publish the needed methods and properties to the outside.
> Don't let the Application create and control your forms, move this to your 
> class. So, your class hides the forms, datampdules and other stuff.

That's what I do too.

unit appforms;

type
   TBaseMyForm = Class(TForm)
     // Define public interface
   end;
   TBaseMyFormClass = Class of TBaseMyForm;

Var
   MyFormClass : TBaseMyFormClass = Nil

And then somewhere:



Type
   TForm = TBaseMyForm;

   TMyForm = Class(TForm);
    // Regular lazarus definition of form
   end;

initialization
   MyFormClass = TMyForm; 
end;

And then, whenever I need an instance of TBaseMyForm:

F:=MyFormClass.Create(Self);

You could even substitute the complete TMyForm form with another one, depending on
configuration options.

Michael.




More information about the Lazarus mailing list