[fpc-pascal] how to make a type private to the unit but not defining it in the implementation section?
Tony Whyman
tony.whyman at mccallumwhyman.com
Fri Mar 8 12:36:15 CET 2019
I would use an "interface" type in this situation.
In the unit's "interface" section define the interface type and a
function to create a new instance of the interface.
In the unit's implementation define all your classes including a class
that provides the interface. The implementation of the function that
creates a new instance of the interface should create and return a new
instance of the class that provides the interface.
If you are using COM interfaces then you don't even need to explicitly
destroy the interface as they are automatically deleted when all
references go out of scope. if you use CORBA interfaces then your
interface definition should include a method to free the interface.
On 07/03/2019 08:10, Dennis wrote:
> unit frproxyserver;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
> Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, Grids,
> frBase;
>
> type
>
> TMyStringGrid=class(TStringGrid) //how to I make this class visible
> only to this unit?
> public
> end;
>
> { TProxyServerFrame }
>
> TProxyServerFrame = class(TBaseFrame)
> Panel_Top: TPanel;
> StringGrid1: TMyStringGrid;
> private
>
> public
>
> end;
>
> implementation
>
> {$R *.lfm}
>
> end.
>
> =============
> My reason is I don't want to pollute the name space but if I put the
> declaration of TMyStringGrid in the implementation section, it cannot
> be used by the field in the class declaration of TProxyServerFrame.
>
> if there a compiler directive that I can put around
> TMyStringGrid to make it only visible to the unit frproxyserver?
>
> Dennis
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
More information about the fpc-pascal
mailing list