• Domingo 22 de Diciembre de 2024, 20:14

Autor Tema:  Control Ocx  (Leído 2623 veces)

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Control Ocx
« en: Lunes 10 de Enero de 2005, 00:02 »
0
Hola a todos.
Estoy haciendo un control OCX, es un código barras EAN13, que tiene sólo un picturebox y el usercontrol que lo incluye.
La idea es pasarle sólo el código numérico, mediante una propiedad y que me dibuje el código de barras.
Bueno hasta ahí lo he conseguido, pero he tenido que crear otras 2 propiedades de Altura y Anchura del OCX, que se las tengo que pasar desde el proyecto donde inserto el OCX.
Lo que no consigo es obtener directamente las propiedades Width y Height del OCX del proyecto en que lo inserto. Es decir obtener estos valores sin pasárselos mediante Altura y Anchura.
Me explico con un ejemplo:
Esto es lo que yo hago y así me lo hace bien:
Citar
  'El control OCX se llama  MiEan13
    MiEan13.Anchura =  MiEan13.Width
    MiEan13.Altura =  MiEan13.Height
    MiEan13.Número=Text1.Text
Yo lo que quiero hacer es:
Citar
    MiEan13.Número=Text1.Text
porque pienso que esos valores los tengo ya y no tengo porqué volverlos a asignar  a ninguna propiedad, pero no hay manera.
No sé, dentro del código del OCX cómo conseguir el valor de Width y Height.

Perdonar por el rollo, pero no lo saco. :huh:
Saludos y gracias por adelantado.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Control Ocx
« Respuesta #1 en: Lunes 10 de Enero de 2005, 23:52 »
0
Ya lo tengo, después de mucho buscar he encontrado la solución.
Hay que usar el Objeto: Extender que nos da las propiedades del OCX que insertamos: en mi caso:
    Extender.Height , para saber la altura
    Extender.Width, para saber anchura.
De esta forma ya he podido quitar las 2 propiedades que me había creado.

Para saber datos de propiedades del Form, usamos el objeto: Parent, xej: Parent.ScaleMode.

Saludos.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Control Ocx
« Respuesta #2 en: Martes 11 de Enero de 2005, 15:32 »
0
Hola ebolo.

Puedes utilizar el objeto extender, pero si no me equivoco, haciéndo esto estás añadiendo propiedades a tu control que probablemente no uses para nada.

Puedes conocer el ancho y alto de un control desde el mismo control de esta forma:
Código: Text
  1.  
  2. UserControl.Width
  3. UserControl.Height
  4.  
  5.  

Y lo mismo con otras propiedades y métodos.

Suerte.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Control Ocx
« Respuesta #3 en: Martes 11 de Enero de 2005, 17:06 »
0
Gracias Brroz por la respuesta.
El problema que tengo si uso Usercontrol.Width ó Usercontrol.Height es que no me da las mismas medidas que el picturebox que engloba porque la propiedad .ScaleMode no es la misma:
   - en el usercontrol=3 (pixel)
   - en picturebox=0 (user), que viene definida por la propiedad .Scalewidth=113

He probado a cambiar cosas, pero siempre los valores de Width y Height son distintos tengan la propiedades iguales o no.
Ahora me funiona bien si el form que tiene el ocx tiene su propiedad .Scalemode=3 (pixel) si no No me dibuja bien las líneas. De todas formas ahora estoy haciendo modificaciones para que funcione independientemente del valor de esta propiedad, sea pixel, Twip.......  


Otra pregunta, para que funcione un activex en access, ¿es necesario añadir algo de código al mismo?, es porque una vez creo el OCX sí consigo usarlo en proyectos de VB pero no soy capaz de insertarlo en los formularios o informes de access porque no lo encuentro por ningún lado de access.

Saludos.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Control Ocx
« Respuesta #4 en: Martes 11 de Enero de 2005, 17:36 »
0
Hola.

Podrías usar ScaleWidth o ScaleHeight o realizar tu mismo las conversiones. With y Height siempre te van a dar las dimensiones en twips, ScaleWidth y ScaleHeight te dan el valor según la escala que utilices.

Con respecto a lo de usar los ocx en access, la cosa si no recuerdo mal iba más o menos así:
Ve al menú 'Herramientas' y selecciona 'Controles ActiveX...' te debe aparecer una menú desplegable con todos los ocx registrados en tu sistema. Selecciona el que te interese y ya puedes ir al formulario y colocar el control. Así de sencillo.

Suerte.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Control Ocx
« Respuesta #5 en: Martes 11 de Enero de 2005, 17:45 »
0
Gracias de nuevo, No sabía que el valor de Width y Height era siempre en Twips.

En cuanto a lo de access, así es como lo hago pero no me aparece y en principio lo tengo en system32 y no me da ningún problema al registrarlo.

Saludos.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Control Ocx
« Respuesta #6 en: Martes 11 de Enero de 2005, 18:13 »
0
Hola ebolo.

Disculpas, ahora que lo dices me doy cuenta: Width y Height dan las medidas según el valor de ScaleMode excepto para objetos Form, Printer y Screen, que dan las dimensiones siempre en twips.

En cuanto a lo de access, ten en cuenta que una vez que seleccionas el ocx no te aparece en el cuadro con el resto de los controles es como si ya lo tuvieses seleccionado. Directamente ve a un formulario y pon el control.

Chao.

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Control Ocx
« Respuesta #7 en: Martes 11 de Enero de 2005, 19:35 »
0
Entonces como un usercontrol es similar al form, por eso sus medidas son siempre en Twips, ya entiendo porque no me diera las mismas medidas que yo esperaba.

En cuanto a lo de access, el problema es que no  puedo seleccionarlo porque No aparece dentro de la tabla 'Más Controles,  ni en Herramientas - Control Activex, ni en Insertar - Control Activex; pero Sí aparece dentro de la tabla de componentes en un proyecto de VB, para seleccionarlo.
 :(  :(  :(  :(

Muchas gracias por todo, si se te ocurre algo será bienvenido.