[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?

Frank Church vfclists at gmail.com
Fri Mar 23 15:33:22 CET 2012


On 23 March 2012 14:15,  <michael.vancanneyt at wisa.be> wrote:
>
>
> 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.
>
>

Do you have a good working sample of this approach?


> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus



-- 
Frank Church

=======================
http://devblog.brahmancreations.com




More information about the Lazarus mailing list