¿Te parece algo tan barato como esto?
Código:
unit WctlformX;
interface
procedure Register;
implementation
uses
Controls, SysUtils, DsgnIntf;
function PropertyMapperFunc(Obj: TPersistent; PropInfo: PPropInfo): TPropertyEditorClass;
var
NameValue: string;
begin
if (PropInfo^.Name = 'Name') and
not ((Obj is TWinControl) and (TWinControl(Obj).Parent = Nil)) Then
begin
NameValue := GetStrProp(Obj, PropInfo);
if (NameValue[1] <> '_') Then
SetStrProp(Obj, PropInfo, '_' + NameValue);
end;
Result := Nil;
end;
procedure Register;
begin
RegisterPropertyMapper(PropertyMapperFunc);
end;
end.
como funcionar funciona, pero sinceramente no me gusta nada.
Te comento que estube probando:
1 > Crear clases heredadas de TWinControlCustomModule y TWinControlForm, pertenecientes a la unit Wctlform que está compilada en el dsnide*.bpl, por lo que pude ver muy por debajo, estas son las clases de los forms que utiliza el IDE cuando creas en tiempo de diseño un TCustomForm o un TCustomDataModule. Estas clases implementan la interface IDesignerHook, el problema es que no encontré como registrarlas para probarlas. Si te interesa te paso el código.
2 > Probé crear una clase:
Código:
TIdeFormNotifier = class(TNotifierObject, IOTAFormNotifier, IOTAIDENotifier)
, donde recibo sin problemas las notificaciones AfterCompile, BeforeCompile y FileNotification, pero no recibo ComponentRenamed, que es la que me interesa.
Bueno te dejo esas inquietudes, ya que solo las probé muy por encima, si verdaderamente te interesa y crees que esta pueda ser otra solución (yo no creo que venga por ahí, hay que buscar qué método de que clase es el que da los nombres), esta en tus manos seguir investigando.
Saludos!