[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