Ver Mensaje Individual
  #12  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues me tiré el clavado. A ver si no es demasiada vuelta.

Tuve que hacer un Wizard y un Creator:

Código:
type
  TAppBarCreator = class(
    TInterfacedObject, IOTACreator, IOTAModuleCreator
  )
    { De IOTAModuleCreator }
    procedure FormCreated(const FormEditor: IOTAFormEditor);
  end;

  TAppBarWizard = class(
    TNotifierObject, IOTAWizard, IOTARepositoryWizard, IOTAFormWizard
  )
    { De IOTAWizard }
    procedure Execute;
  end;

procedure Register;

implementation

{ Este método lo llama el IDE en cuanto se crea el formulario }
procedure TAppBarCreator.FormCreated(const FormEditor: TFormEditor)
var
  NTAComponent: INTAComponent;
  Component: TComponent;

begin
  // Obtenemos una referencia al formulario recién creado 
  if Supports(FormEditor.GetRootComponent, INTAComponent, NTAComponent) then
  begin
    Component := NTAComponent.GetComponent;
    if Component is TAppBarForm then
      // y le asignamos el valor deseado a la propiedad
      TAppBarForm(Component).Height := 55;
  end;  
end;

{ Aquí le pasamos al IDE el Creator del formulario }
procedure TAppBarWizard.Execute;
var
  Services: IOTAModuleServices;

begin
  Supports(BorlandIDEServices, IOTAModuleServices, Services);
  Services.CreateModule(TAppBarCreator.Create);
end;

{ Registramos el Wizard y el formulario }
procedure Register;
begin
  RegisterPackageWizard(TAppBarWizard.Create);
  RegisterCustomModule(TAppBarForm, TCustomModule);
end;

end.
De esa forma obtengo tres cosas:
  1. El icono para agregar un formulario TAppBar aparece automáticamente en "New Items"
  2. Las nuevas propiedades publicadas aparecen en el inspector de objetos
  3. El formulario aparece con las dimensiones deseadas

Quedan cosas en el tintero ya que entiendo poco de las ToolsApi y aún quiero ver si puedo evitarme la vuelta al Wizard (aunque vino bien aprender cómo se hace). Además al agregar el formulario nuevo aparece como TAppBarForm2 en lugar de TAppBarForm1, es decir, que sigue la numeración del formulario principal de la aplicación.

// Saludos
Responder Con Cita