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@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal