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


Cita:
Empezado por roman
Era una forma de decir. No sé porqué sabía que esa frase iba a causarte esa expresión. Si lo sé no la digo.


Cita:
Empezado por roman
Por similares me refiero a que en ambos casos- al menos hasta donde alcanzo a entender de lo que quieres hacer -se trata de propiedades que referencian otras componentes pero que en sí mismas no son mantenidas (creadas, destruídas, etc.) por el control.
Comprendo. Pero, sigo diciendo que no he sido capaz de hacerlo de otro modo que como lo he hecho. Y que cuando intento otra cosa (lo que parece razonable) falla, al menos hasta ahora.

Por otro lado me estoy pegando con el método "InvokeEvent". Me gustaría utilizarlo, un poco irracionalmente, puesto que el componente, lo diré una vez más, funciona aparentemente bien.

Encuentro este problema:

Código Delphi [-]
   procedure TDecBrowser.InvokeEvent(DispID: TDispID;
     var Params: TDispParams);
   begin
     inherited;
     if DispId = 250 then // 250 - OnBeforeNavigate2
     begin
       // En correspondencia con los parámetros del evento
       // en cuestión, yo precisaría manejar dos parámetros:
       // Params[1] (URL) y Params[6] (Cancel) pero con el
       // el evento puedo hacerlo, esto es, sé hacerlo, lo
       // que no en este método, pues, ¿cómo conseguir algo así?
       // if Params[1] = 'http://unaUrl' then
            {...}
       // El dato contenido en Params[1] ha de ser de tipo
       // "OleVariant".
     end;
   end;
Ahora mismo estoy actuando así en el evento que me interesa y es necesario:

Código Delphi [-]
   procedure TDecBrowser.ComprobarEnlaces(Sender: TObject;
     const pDisp: IDispatch; var URL, Flags, TargetFrameName,
     PostData, Headers: OleVariant; var Cancel: WordBool);
   var
     i: integer;
     enlace: string;
   begin
     Cancel := false;
     for i := 0 to FAcciones.ActionCount-1 do
     begin
       enlace := Format(rsPosibleEnlace,
         [FAcciones.Actions[i].Name]);
       if (URL = AnsiLowerCase(enlace)) then
       begin
         Cancel := true;
         FAcciones.Actions[i].Execute;
       end;
     end;
     if Assigned(FOnBeforeNavigate2) then
     begin
       FOnBeforeNavigate2(Sender, pDisp, URL, Flags,
         TargetFrameName, PostData, Headers, Cancel);
     end;
   end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-11-2005 a las 21:50:17. Razón: Corrección del texto.
Responder Con Cita