Hola.
Realmente no sé si estoy entendiendo el sentido de hacer eso, pero no creo que usar singleton logre el efecto que buscas. Claramente te impediría crear dos instancias de la clase pero esta continuaría siendo visible y por tanto podrías utilizar su nombre de forma directa...
Una chapuza para limitar el ámbito del nombre de la clase podría ser declarar la clase en la interface de una unidad:
Código Delphi
[-]
unit UnitClass;
interface
type
TClase = class
private
FCaption: string;
public
property Caption: string read FCaption write FCaption;
end;
implementation
end.
La variable en otra:
Código Delphi
[-]
unit UnitVar;
interface
uses UnitClass;
var
Clase: TClase;
implementation
initialization
Clase := TClase.Create
end.
Y solo incluir la unidad que declara la variable:
Código Delphi
[-]
...
implementation {$R *.dfm}
uses UnitVar;
procedure TForm1.Button1Click(Sender: TObject);
begin
Clase.Caption := 'Hola a todos';
ShowMessage(Clase.Caption);
end;
end.
Pero como te dije arriba, no sé si estoy captando la idea...
Saludos