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 30-10-2014
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Poder: 21
ander Va por buen camino
Generar propiedad en ActiveX

Imaginemos que creo un activeX library (ocx) desde delphi XE2 y creo un active Form. (En este habrá algún componente).
Me genera varios ficheros y cuando cojo el ocx y lo ejecuto en cualquier sitio no tengo ningún problema.
Ahora sí, yo quiero generar una propiedad en mi ocx, una propiedad nueva.
Después de mirar los ficheros que genera automáticamente delphi , que serían Prueba_TLB.pas, Prueba.irdl y Prueba.pas con su Dfm y
lo que hago es :
Abrir el fichero Prueba_TLB.pas y genero la nueva propiedad
Código Delphi [-]
    IMyOCX = interface(IDispatch)
    ['{88F119F0-D30D-4E1A-A753-654983F1BA61}']
     // Aqui están todas las demas funciones y propiedades del OCX
    function Get_Dato_Leido: WideString; safecall;
    procedure Set_Dato_Leido(const Value: WideString); safecall;
    property Probando : WideString read Get_Dato_Leido write Set_Dato_Leido;
Luego...
Código Delphi [-]
  IMyOCXDisp = dispinterface
    ['{88F119F0-D30D-4E1A-A753-654983F1BA61}']
    // Aquí van las otras declaraciones
    property Probando: WideString dispid -518;
Esto digamos que es una copia de la propiedad caption del OCX creado.
Mi primera interrogante surge con el dispid -518 que no se a que se refiere.
Se lo dejo tal cual,de momento y abro el fichero Prueba.irdl
Código Delphi [-]
  interface IMyOCX: IDispatch
  {
    // Aquí van las otras declaraciones
    [propget, id(0xFFFFFDFA)]
    HRESULT _stdcall Probando([out, retval] BSTR* Value);
    [propput, id(0xFFFFFDFA)]
    HRESULT _stdcall Probando([in] BSTR Value);
  };
Y copio el caption y lo renombro.
Aquí se ve que el dispid -518 el valor Hexadecimal es propget, id(0xFFFFFDFA)
y por último abro el fichero Prueba.pas y allí declaro
Código Delphi [-]
  protected
    { Protected declarations }
    // Aquí van las otras declaraciones
    function Get_Dato_Leido: WideString; safecall;
    procedure Set_Dato_Leido(value:AnsiString);
y..
Código Delphi [-]
function TMyOCX.Get_Dato_Leido: WideString;
begin
  Result := WideString(label1.caption); // esto esta cambiado
end;

procedure TMyOCX.Set_Dato_Leido(const Value: WideString);
begin
//  Probando := Value;      No deja usar Probando
 Caption := Value;         
end;
// Al final no puedo acceder a la propiedad Probando y debo usar el caption para compilar.

También he cambiado el dispid -518 por -519 y poner su valor hexadecimal id(0xFFFFFDF9) donde corresponda pero no sé si lo estoy
haciendo bien.(no lo hago bien porque no me funciona,compila pero no va)
Le estoy dando vueltas y ni idea.
¿Alguien me podría decir como crear una propiedad en el OCX ?
Mi OCX, es una comunicación TCP/IP, y lo que quiero es coger los datos que recibo y sacarlas en alguna propiedad.
En este momento lo que hago es escribirlo en la propiedad caption de mi OCX, pero me gustaría saber como se crea una propiedad.
Muchas gracias.
Responder Con Cita
  #2  
Antiguo 30-10-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.271
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No se si he entendido bien, pero quieres agregar una propiedad a tu OCX, pero se la añades al fichero TLB.
¿Es así?
Si es así, creo que estás confundiendo las cosas. El fichero TLB no es más que un "envoltorio" realizado al componente, por lo tanto por mucho que añadas a este fichero, el componente real no cambia.
Deberías añadir la propiedad al OCX y luego volver a generar los ficheros (TLB). Automáticamente la nueva propiedad te aparecerá.

De todas formas no se si te he entendido del todo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 30-10-2014
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Poder: 21
ander Va por buen camino
Quitaré todo lo que tengo e implementaré la propiedad en el OCX.
Pero lo hice en su día y no había manera por lo que decidí hacerlo de esa manera pero ya veo que no estaba bien.
Seguiré mirando.
Muchas gracias
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
intraweb Activex pablo.gonzalez Internet 1 23-09-2011 22:03:03
Uso de ActiveX manuweb OOP 1 20-12-2006 11:40:38
ActiveX leflaco HTML, Javascript y otros 1 11-05-2006 17:17:15
ActiveX FerCastro Varios 3 02-05-2006 20:42:37
ActiveX s2f C++ Builder 2 08-09-2004 20:54:40


La franja horaria es GMT +2. Ahora son las 17:35:29.


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