Ver Mensaje Individual
  #17  
Antiguo 03-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Pues el componente está muy bien, o eso me parece, en cuanto a que puede resultar útil, pero, me encuentro con un problema que paso a explicar. Se trata de las acciones que pueden asociarse al componente.

Puede asociarse con el componente "DecBrowser" un componente "TActionList". No hay problema en hacerlo, y tampoco con el componente, es decir, que todo parece ir bien.

El problema está en quitar el componente de un formulario en tiempo de diseño. Añádase en un formulario vació el componente "DecBrowser"; añádase también un "TActionList" al formulario; asígnese este último componente a la propiedad "Acciones" del "DecBrowser"; quítese del formulario ahora el "TActionList", y, a continuación, trátese de quitar el componente "DecBrowser" del formulario...

Perdón por las "violaciones de acceso", "errores abstractos" y demás. No era mi intención, se lo juro. Estoy probando cosas. Por ejemplo, si a la hora de crear la variable que contendrá la propiedad "Acciones" hago algo así:

Código Delphi [-]
   constructor TDecBrowser.Create(AOwner: TComponent);
   begin
     inherited Create(AOwner);
     FEnlaces := TStringList.Create;
     FAcciones := TActionList.Create(Forms.Application); // Aquí
     inherited OnBeforeNavigate2 := ComprobarEnlaces;
   end;
En lugar de algo como esto otro:

Código Delphi [-]
   constructor TDecBrowser.Create(AOwner: TComponent);
   begin
     inherited Create(AOwner);
     FEnlaces := TStringList.Create;
     FAcciones := TActionList.Create(Self); // Aquí
     inherited OnBeforeNavigate2 := ComprobarEnlaces;
   end;
La cosa parece pintar mejor, sin embargo, aún no he dado con la solución para el problema que he comentado arriba. Sigo en ello, a ver si soy capaz. Cualquier ayuda será bienvenida. Por cierto, en el código del componente actualmente hay algo como esto:

Código Delphi [-]
   property Acciones: TActionList read FAcciones write FAcciones;
Y lo he cambiado por algo así:

Código Delphi [-]
  property Acciones: TActionList read GetAcciones write SetAcciones;
Con sus correspondientes métodos:

Código Delphi [-]
  // Devolvemos la lista de acciones asociada.
  //
  function TDecBrowser.GetAcciones: TActionList;
  begin
    Result := FAcciones;
  end;
  
  // Establecemos la lista de acciones.
  //
  procedure TDecBrowser.SetAcciones(value: TActionList);
  begin
    FAcciones := value;
  end;
Pero, como pueden ver, son algo superfluos los métodos de arriba, puesto que para ese viaje no hacían falta tantas alforjas, como suele decirse. Pero, es que esto otro, aunque compilar compila, no funciona:

Código Delphi [-]
  // Establecemos la lista de acciones.
  //
  procedure TDecBrowser.SetAcciones(value: TActionList);
  begin
    FAcciones.Assign(value); // ni así
    FAcciones.Assign(TPersistent(value)); // ni así tampoco
  end;
Me aparece tal que este error:


Cita:
---------------------------
Error
---------------------------
Cannot assign a TActionList to a TActionList.
---------------------------
OK
---------------------------
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-11-2005 a las 14:29:22. Razón: Corrección del texto.
Responder Con Cita