Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
De C++ a Delphi (Interfaces / ActiveX)

Estoy usando un componente ActiveX con Delphi 7, cuento con un breve manual de ayuda del programador con ejemplos en C++. Tal como me indica el manual arrastro al formulario dos controles: TVisor y TCapa

TVisor implementa las interfaces IVisor (interfaz principal del visor) e ILayer (Gestor de Capas), esta última a su vez implementa el método AddLayer().

El ejemplo dice: "... para añadir la capa obtenemos el interfaz ILayer del visor e invocamos al método AddLayer pasándole la interfaz IUnknown de la capa ... ", que se traduce en:

Código:
ILayer layer(m_visor.GetControlUnknown());
layer->AddLayer(m_capa.GetControlUnknown())
m_visor.Initialize();
Esto en Delphi ¿cómo?.

En principio intenté:

Código:
m_visor.AddLayer(...);
pero delphi me dice que el identificador AddLayer no está declarado.

A partir de aquí he estado dandole vueltas pero ...

Muchas gracias de antemano.
Responder Con Cita
  #2  
Antiguo 20-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Mira, no sé mucho de esto pero me ha pasado que en ocasiones el control en sí no es el que implementa la interfaz sino que una propiedad del control es la que lo hace. A veces tal propiedad no es del tipo adecuado sino simplemente IUnknown por lo que debes obtener una interfaz ILayer mediante la función Supports o con QueryInterface.

// Saludos
Responder Con Cita
  #3  
Antiguo 21-04-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Gracias por el consejo. Voy a ver...
Responder Con Cita
  #4  
Antiguo 24-04-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
He transfromado el código:
Código:
ILayer layer(m_visor.GetControlUnknown());
layer->AddLayer(m_capa.GetControlUnknown())
por
Código:
(m_visor As ILayer).AddLayer((m_capa As IUnknown), ...);
El primer parámetro de AddLayer debe ser la interfaz IUnknown del componente TCapa.
A la hora de compilar, no se producen errores, pero al ejecutarse esta linea aparece el error de Interfaz no soportada.
En primer lugar ¿es correcto el modelado con As?, y si lo es cómo podría
saber dónde surge el error, yo creo que puede surgir en cualquier de los dos modelados o bien en el propio método AddLayer. ¿Cómo podría averiguarlo?.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:44:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi