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); 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); 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
[-]
function TDecBrowser.GetAcciones: TActionList;
begin
Result := FAcciones;
end;
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
[-]
procedure TDecBrowser.SetAcciones(value: TActionList);
begin
FAcciones.Assign(value); FAcciones.Assign(TPersistent(value)); end;
Me aparece tal que este error:
Cita:
---------------------------
Error
---------------------------
Cannot assign a TActionList to a TActionList.
---------------------------
OK
---------------------------
|