Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-09-2016
TOLO68 TOLO68 is offline
Miembro
 
Registrado: sep 2016
Posts: 14
Poder: 0
TOLO68 Va por buen camino
Smile Agregar Propiedad a ActiveForm (OCX) creado con C++ Builder 5.0

Hola a todos

Estoy creando un control OCX en C++ Builder 5.0, ya he hecho un par de pruebas con graficos y demas, pero tengo un problema con las propiedades

Abro el Visual Basic 5 o 6, cargo el control, y la propiedad "Property1" se ve
en la caja de propiedades con valor de "0" pero......intento cambiar el valor a otro y me lo vuelve a poner a "0", he probado con propiedad tipo long, integer, etc y siempre pasa lo mismo, o sea no puedo cambiar el valor.Cosa que si puedo cambiar las otras propiedades que crea el control por defecto, como la "Visible", "Color", etc....

Este mismo Ocx creado tiene el mismo problema cargandolo en el mismo C++ Builder

Tengo la Version 5.0 (Build 12.34) Update Pack 1

----------------------------------------

lo que hago es lo siguiente:

Os pongo todos los pasos detallados desde el inicio

File->Close all

File->New->Pestaña ActiveX->ActiveForm->Boton OK
(aveces me dice que antes cree un ActiveLibrary)

Sale la pantalla "Active Form Wizard" con el nombre del control "ActiveFormX"
Dejo este nombre por defecto y le doy al Boton OK

Aparece el Form "ActiveFormX" y la ventana de codigo con 3 pestañas y el ClassExplorer a su izquierda

Entonces me voy al menu principal de C++ Builder a View->TypeLibrary,

a la izquierda donde estan los nodos, click con boton derecho en LActiveFormX y en el submenu o menu flotante, New->Property, dejo el nombre "Property1"
que sale por defecto, y en la parte derecha de esta ventana en la pestaña "Text" sale lo siguiente:

[
propput,
id(0x00000010)
]
HRESULT _stdcall Property1([in] long Value );

[
propget,
id(0x00000010)
]
HRESULT _stdcall Property1([out, retval] long * Value );

que debe ser la escritura y lectura de la propiedad

en la barra de botones de arriba le doy a "Refresh Implementation" y luego a "Register Type Library", sale la ventana Compiling y luego un mensaje diciendo que se ha registrado el componente.ocx


Me estoy dejando algo por hacer ??????????, o no es la manera correcta ???
O igual debo guardar estos valores en alguna variable

Gracias de antemano

Saludos
Responder Con Cita
  #2  
Antiguo 24-09-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 25-09-2016
exmachina exmachina is offline
Miembro
NULL
 
Registrado: sep 2016
Ubicación: 127.0.0.1
Posts: 30
Poder: 0
exmachina Va por buen camino
Cita:
Empezado por TOLO68 Ver Mensaje
...
O igual debo guardar estos valores en alguna variable

Gracias de antemano

Saludos
Pues si, debes crear una variable. La variable debes declararla en el archivo "TuActiveform.h" (como variable privada) Por ejemplo:

Código PHP:
...
  
STDMETHOD(get_Property1(longValue));
  
STDMETHOD(set_Property1(long Value));
private:
     
int m_Property1value;
}; 
La variable debe ser inicializada en el constructor o en FinalConstruct. Esto ultimo es de ATL (Visual Studio) y no se si esta implementado en C++ Builder, pero si no le asignas un valor en el constructor, o donde sea, tendras problemas.

Y en el archivo .cpp seria asi:
Código PHP:
STDMETHODIMP ThhhhImpl::get_Property1(longValue)
{
  *
Value m_Property1value;
  return 
S_OK;
};

STDMETHODIMP ThhhhImpl::set_Property1(long Value)
{
  
m_Property1value =  m_Value;
  return 
S_OK;
}; 
Para que persista (lo de propertybag en vb) se debe implementar esto (lo he encontrado buscando en google "c++ builder activex property persistence"):
http://bcbjournal.org/articles/vol4/...persistent.htm

Nota: Yo solo conozco un poco de como crear librerias COM sencillas con Visual Studio, pero no tengo ni idea sobre como crear controles.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
No puedo usar AddFlow5.4 ActiveX en C++builder 6 aguml C++ Builder 0 23-12-2014 19:47:57
crear activeX o dll para usar en otros sistemas roberto_alg Providers 2 03-06-2013 16:20:47
crear guis y dudas para empezar CarmaZone Lazarus, FreePascal, Kylix, etc. 7 05-02-2007 02:51:19
Usar ActiveX importados en otras maquinas crijos Varios 1 21-01-2006 20:06:33
Insertar ActiveX en C++Builder salva2 C++ Builder 1 01-07-2004 16:04:46


La franja horaria es GMT +2. Ahora son las 18:49:56.


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