Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Dudas para usar y crear OCX-ActiveX en C++ Builder 5.0 (https://www.clubdelphi.com/foros/showthread.php?t=90802)

TOLO68 07-09-2016 19:29:44

Dudas para usar y crear OCX-ActiveX en C++ Builder 5.0
 
Hola a Todos

Desde hace años programo en Visual Basic 5-6
con el cual programé algunos OCX con VB5 CCE

Ahora quiero programar estos mismos y algunos nuevos
con C++ Builder 5.0, pero tengo algunas dudas

1- Puedo usar los OCX compilados con VB5 en Builder, o no son compatibles ??
ya que voy a Component - Import Activex Control, y no aparece
en la barra de Controles, y en VB5 o 6 si que funcionan

2- Al crear ActiveForms en Builder, en que archivo o como
se hace para asignar un icono a este OCX, para que aparezca
en la barra de controles de VB, Builder o Delphi.
y que extension y medidas debe ser el icono.

Gracias a todos de Antemano

bitbow 08-09-2016 19:01:11

Los OCX son compatibles con delphi (y varios lenguajes mas), no deberias tener problemas al intentar usar tus compilados de VB en Delphi o C Builder, de igual forma lo que desarrolles en C Builder los puedes usar en VB u otro lenguaje que te agrade.

Saludos.

Snaked 14-09-2016 09:56:40

Si, importar archivos OCX es muy facil en C++ Builder

aqui tienes un video que explica por pasos como lo tienes que instalar en la pestaña ACTIVEX de la VCL



PD.- ojala todas las dudas fuesen asi de faciles de responder jejejej :)

Casimiro Notevi 14-09-2016 10:07:05

Cita:

Empezado por Snaked (Mensaje 508752)
...

Los enlaces a videos de youtube puedes ponerlo tú mismo así:
Ejemplo, tienes el enlace: https://www.youtube.com/watch?v=B6n0op0sLPA
Escribes lo que está después del = entre las etiquetas youtube:
[youtube]B6n0op0sLPA[/youtube]

Snaked 14-09-2016 10:25:24

ok, gracias Moderador..... creia que al no tener los 10 mensajes no podia ponerlo aun

TOLO68 14-09-2016 12:10:54

Hola Snaked, gracias por tu rapida respuesta, pero no veo el link del video, jejeje, y el de mas abajo es de una bicibleta
Saludos a Todos

Casimiro Notevi 14-09-2016 14:02:20

Cita:

Empezado por TOLO68 (Mensaje 508758)
Hola Snaked, gracias por tu rapida respuesta, pero no veo el link del video, jejeje, y el de mas abajo es de una bicibleta
Saludos a Todos

Tendrás que revisar tu ordenador, en el enlace de arriba se muestra el video en esta misma pantalla.
El de abajo es un ejemplo que he escrito al azar, menos mal que es una bicicleta y no otra cosa :eek:

TOLO68 14-09-2016 14:28:54

jajajajaja!!!!, otra cosa que querias decir, un video que lleva XXX ????
Si menosmal que no ha sido unos de estos porque nos banean a todos.

Asi mismo voy a poner los pasos que hago, porque algunos OCX de prueba
que he hecho con C++ Builder, si puedo importarlos en el mismo C++ Builder y en VB

Ojo !!!, el control esta desarrollado y compilado en "Visual Basic 5 Control Creation Edition"
No se si sera este el problema

Hago los siguientes pasos

Menu Component-Import ActiveX Control

Se abre la Ventana "Import Activex"

En la lista selecciono el OCX

Me dice que ya existe el NombreControl.cpp y le doy a sobreescribir

Y se abre una ventana de codigo con el NombreControl.cpp

A partir de aqui no se que hacer, porque el control no aparece
en la barra de herramientas donde estan los demas con lo cual
no puedo ponerlo en el form donde lo necesito, no se si es que tengo
que compilar este archivo, registrarlo, etc....

En todo caso lo que haria es enviaros un OCX de prueba para que lo podais
descargar, y probar vosotros mismos a ver si lo podeis importar a Builder

Gracias de antemano

exmachina 14-09-2016 22:45:11

Cita:

Empezado por TOLO68 (Mensaje 508769)
jajajajaja!!!!, otra cosa que querias decir, un video que lleva XXX ????
Si menosmal que no ha sido unos de estos porque nos banean a todos.

Asi mismo voy a poner los pasos que hago, porque algunos OCX de prueba
que he hecho con C++ Builder, si puedo importarlos en el mismo C++ Builder y en VB
..

Sobre lo de usar un control ACtiveX en C++ Builder no puedo ayudarte ya que soy novato, pero lo que si puedo asegurar es que el control necesita que la libreria de tiempo de ejecucion de visual basic 5 este instalada en el equipo donde se ejecutara . En los sistemas operativos mas recientes de MS esta instalada la libreria de tiempo de ejecucion de visual basic 6, pero no la de visual basic 5

TOLO68 15-09-2016 14:21:43

exmachine gracias, me imagino que te refieres a la libreria msvbvm50.dll
esta la tengo instalada porque tengo el visual basic 5 instalado,
creo que el problema me viene de no haber compilado el package de los
archivos que me crea al importar el ocx o algo de esto
porque no se en que ventana me salian los iconos de los controles que funcionan
en color, y los que no funcionan en gris, creo que era la de clases

Vaya pesadillaaaaa!!!!, con lo facil que es importarlos en Visual Basic

Bueno tendre paciencia hasta que un dia lo logre o alguien lo haya
solucionado, ya que por internet veo que hay mas gente que le pasa lo mismo


gracias

exmachina 15-09-2016 20:24:17

Pues si, me referia a la libreria msvbvm50.dll.

Hoy he probado a importar un control ActiveX (creado con VC++) en C++ Builder 2010 y tengo los mismos problemas que tu. Este fin de semana seguire probando, a ver si encontramos una solucion.

Un saludo

TOLO68 18-09-2016 00:38:46

Hola a todos, ya esta por aqui vuestra pesadilla!!!!!, jejejejejjej

Tengo una consulta

Estoy creando un ActiveX ActiveForm en C++ Builder

Ya he hecho pruebas con graficos y demas
incluso lo he compilado para poder cargar la OCX en VB y va perfecto

pero....mi duda es

como hago para agregar propiedades y metodos a este control porque
me salen un monton de opciones al crearlas y luego me da un error de codigo

la verdad es que el C++ Builder me va gustando
aunque claro algo mas dificil que el VB,

tambien si alguien sabe de un tutorial o manual para crear controles

gracias de antemano

Casimiro Notevi 18-09-2016 01:14:22

¿Esta pregunta tiene algo que ver con la que iniciaste el hilo?
Recuerda nuestra guía de estilo, gracias.

exmachina 20-09-2016 03:42:39

Haz clic el menu View->Type Library. Ahi podras añadir propiedades y metodos.
Realmente es muy difrerente a VB6, pero esto es mas "real" que vb6 ya que vb6 "esconde" muchas cosas de COM/ActiveX para simplificar su uso, pero a su vez tambien lo limita. SI puedes hecha a un vistazo a algun tutorial de como crear controles y librerias COM con ATL ya que encontraras bastantes similitudes, especialmente acerca de los tipo de datos (SafeArrray, BSTR, LONG, etc) la forma de usarlos y sobre todo sobre las propiedades.

Un saludo.

TOLO68 20-09-2016 12:26:44

Gracias exmachine, alli veo todas las propiedades y que me salian en el ocx creado
con c++ builder cuando lo cargaba en VB, parece ser esto
porque habia propiedades que no necesitaba en el ocx, e igual se pueden quitar desde aqui
voy a probar!!!!!!!, ojala me vaya bien, porque los controles los hago con un ActiveForm

Muchas gracias

TOLO68 20-09-2016 18:37:58

wenas, exmachina he probado esto y ya aparecen las propiedades en el OCX tanto en VB como en C++ Builder,
pero tengo un pequeño problema, seguro que es una tonteria, no puedo cambiar el valor de esta propiedad,
tanto desde C++ builder como de VB, y las demas si
es decir, he hecho una con nombre "MiPropiedad" tipo long, aparece en la caja de propiedades que esta en "0"
si intento cambiarla a "112" por ejemplo, se pone en "0" otra vez, ojala puedas ayudarme.

Gracias

Saludos

TOLO68 24-09-2016 18:19:04

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

Casimiro Notevi 24-09-2016 18:23:44

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

exmachina 25-09-2016 04:37:10

Cita:

Empezado por TOLO68 (Mensaje 509074)
...
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.


La franja horaria es GMT +2. Ahora son las 18:20:05.

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