Autor |
Mensaje |
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Componentes Y Controles De Usuario En Gambas
como se hacen de manera facil
buscando en google encontre un ejemplo demasiado complicado
y
en vbnet es bastante facil se hereda la clase y despues agrego el codigo o un control de usuario en un mini form sin bordes agrego los contoles y les agrego propiedades metodos y ... y la hacer buid aparecen en las herramientas
pero en gambas llevo 3 dias y no encuentro la manera
|
#1 Viernes, 19 Agosto 2011, 20:35 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
En gambas también podés heredar de un control existente para añadirle características.
Pero al hacerlo así no podrías modificar la apariencia visual del control, ni tampoco algunos de sus comportamientos.
Sólo es lógico utilizar la herencia si el nuevo control también es básicamente un TextBox, aunque mejorado.
Por otra parte gambas te permite crear un nuevo control por agregación de controles existentes. Para ello al iniciar el proyecto deberías marcar la opción "Programación de un componente". Los nuevos controles en gambas se basan en los controles UserControl o UserContainer.
UserControl es el control base para crear un nuevo control (debés declarar tu nuevo control como una subclase de UserControl).
UserContainer es el control base para crear un nuevo control que actuará como contenedor de otros controles, como Form, Panel, HBox, etc (debés declarar tu nuevo control como una subclase de UserContainer).
Por supuesto también podés crear un control desde cero, controlando todas sus características, incluyendo la presentación gráfica. Esto lleva más trabajo pero el control es total. Para la representación visual del control deberías dibujar sobre un control DrawingArea. Básicamente debés crear el nuevo control como una subclase de UserControl o UserContainer y dicha clase deberá tener como uno de sus atributos un control DrawingArea.
En la wiki de gambas tenés una guía como para comenzar (para Gambas3):
How To Program Components In Gambas
=================== Cómo programar con Gambas
Speed Books: informática libre.
|
#2 Viernes, 19 Agosto 2011, 21:51 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
Citar: Pero al hacerlo así no podrías modificar la apariencia visual del control, ni tampoco algunos de sus comportamientos.
Sólo es lógico utilizar la herencia si el nuevo control también es básicamente un TextBox, aunque mejorado.
hola exactamente
un texbox mejorado
Citar:
Por otra parte gambas te permite crear un nuevo control por agregación de controles existentes. Para ello al iniciar el proyecto deberías marcar la opción "Programación de un componente". Los nuevos controles en gambas se basan en los controles UserControl o UserContainer.
exactamente eso tambien
aunque no me gusta comparar en vb net tiene unas "clases plantilla" solo es cosa de agregar Inherits System.Windows.Forms.TextBox
y aparecen las barras de propiedades y eventos segun el control del que este heredando y luego escribo el codido en los eventos
modifico las propiedades o agrego propiedades o funciones o procedimientos todo esto por codigo aca no hay diseñador
y ahorro ir texbox por texbox agragando codigo
y en caso de error arreglo solo una vez el codigo
si usare varios botones y todos seran del mismo tamaño Inherits System.Windows.Forms.button y solo cambio el tamaño
y ahorro ir boton por boton cambiando el tamaño
o si necesito un control formado por 2 o mas controles agrego el usercontrol el cual si permite usar el diseñador y agregar los controles con el diseñador sob re el
y luego escribo el código en los eventos modifico propiedades creo propiedades y expongo propiedades y eventos
si quiero reutilizar el compone simplemente agrego el archivo .vb al proyecto (y no genero las dependencias de usar un control compilado a parte)
todo esto desde el mismo proyecto y al hacer generar que es como compilar F7 de gambas aparecen los componentes en la barra de herramientas
ahora como puedo hacer algo parecido en gambas
pero no consigo entender como se hace en gambas
|
#3 Sabado, 20 Agosto 2011, 01:43 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
Citar:
aca no hay diseñador
Es cierto, gambas no tiene un diseñador como el que describes, pero ¿acaso es necesario?
Citar:
y ahorro ir texbox por texbox agragando codigo
y en caso de error arreglo solo una vez el codigo
¿Y por qué habrías de ir por cada TextBox agregando código o arreglando errores?
En gambas, si hacés un nuevo control que "es un" nuevo tipo de TextBox, indicás que el proyecto es un componente, indicas que el componente es un control, especificas las propiedades y constantes requeridas como se indica en el HowTo y listo.
Probablemente sea un poquito más laborioso que en VB, pero me parece que también la forma de hacerlo en gambas es más clara, no te oculta que en realidad lo que estás haciendo es ampliar una jerarquía de objetos.
Citar:
si usare varios botones y todos seran del mismo tamaño Inherits System.Windows.Forms.button y solo cambio el tamaño
y ahorro ir boton por boton cambiando el tamaño
Pero para crear botones que tengan todos un mismo tamaño no necesitás crear un nuevo control.
Citar:
o si necesito un control formado por 2 o mas controles agrego el usercontrol el cual si permite usar el diseñador y agregar los controles con el diseñador sob re el
y luego escribo el código en los eventos modifico propiedades creo propiedades y expongo propiedades y eventos
En gambas también podés hacerlo de forma similar. En tu control deberías (además de heredar de UserControl):
- Incluír en la clase de tu nuevo control la palabra clave EXPORT.
- Tener un atributo de tipo Form.
- Diseñar un formulario con los controles que querés que tenga.
- Al atributo de tipo Form asignarle una instancia de tu formulario en el constructor de tu control.
- Agregar observadores para que tu control capture y emita automáticamente los eventos que se produzcan en tiempo de ejecución sobre los controles que componen el formulario.
Y no hay mucho más que hacer que eso.
Citar:
si quiero reutilizar el compone simplemente agrego el archivo .vb al proyecto (y no genero las dependencias de usar un control compilado a parte)
todo esto desde el mismo proyecto y al hacer generar que es como compilar F7 de gambas aparecen los componentes en la barra de herramientas
En gambas, tenés que crear un ejecutable. Luego el control aparecerá en el toolbox del IDE.
Leete el HowTo que te indiqué, es todo lo que necesitás saber para crear un nuevo control.
=================== Cómo programar con Gambas
Speed Books: informática libre.
|
#4 Sabado, 20 Agosto 2011, 05:58 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Componentes Y Controles De Usuario En Gambas
codificador:
Bueno yo he hecho varios componentes de usuario, para gambas2, en esta pagina web describo paso a paso como le voy añadiendo propiedades.
http://componentesgambas2.blogspot.com/2011/07/presentacion.html
Espero que te valga para empezar.
Hay descrito componentes que empiezan de "cero" y controles que empiezan heredando de otro componentes
fabianfv
No conocia esa ayuda de gambas3, la echare un vistazo para convertir mis controles de gambas2 a gambas3.
Saludos
|
#5 Sabado, 20 Agosto 2011, 09:37 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
hola
no se entendio pero
Citar: Es cierto, gambas no tiene un diseñador como el que describes, pero ¿acaso es necesario?
no eso no se me referia a eso
en vbnet para inherits texbox tampoco hay diseñador solo aparece el cuadro con las propiedades y eventos
y en inherits usercontrol si hay diseñador sobre un form sin bordes
Citar: ¿Y por qué habrías de ir por cada TextBox agregando código o arreglando errores?
por ejemplo e visto gente que incluso hace clases de vb que para hacer un texbox sololetras va texbox por txbox agregando el mismo codigo
muchas veces
yo solo creo una clase texboxsuper y le añado una sola ves el codigo solo letras y nada mas si hay un error en el codigo solo letras solo tengo que ir a un solo lugar y eso arreglara todos los texbox solo letras en todo el proyecto y como la clase es reutilizable en tpdos los proyectos futuros sin volver a reescribir el codigo otra vez
si creara los controles como proyectos indivuales generaria un dll que dificulta el debugeo
o modificaciones al control ademas de geerar otra dependencia
Citar: Pero para crear botones que tengan todos un mismo tamaño no necesitás crear un nuevo control.
porque estan facil
al principio del proyecto creo o reutilizo todos los controles que necesite y no tengo que volver a tocar mas
Citar: En gambas también podés hacerlo de forma similar. En tu control deberías (además de heredar de UserControl):
tarde probare eso despes de este post
Citar:
En gambas, tenés que crear un ejecutable. Luego el control aparecerá en el toolbox del IDE.
Leete el HowTo que te indiqué, es todo lo que necesitas saber para crear un nuevo control.
ok lo leere solo que tengo gambas 2 sobre debian6
Citar:
Espero que te valga para empezar.
Hay descrito componentes que empiezan de "cero" y controles que empiezan heredando de otro componentes
ok lo probare después de escribir este post
|
#6 Sabado, 20 Agosto 2011, 18:10 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
Citar:
por ejemplo e visto gente que incluso hace clases de vb que para hacer un texbox sololetras va texbox por txbox agregando el mismo codigo
muchas veces
yo solo creo una clase texboxsuper y le añado una sola ves el codigo solo letras y nada mas si hay un error en el codigo solo letras solo tengo que ir a un solo lugar y eso arreglara todos los texbox solo letras en todo el proyecto y como la clase es reutilizable en tpdos los proyectos futuros sin volver a reescribir el codigo otra vez
El año pasado cuando estaba escribiendo algunos ejemplos que muestran cómo crear controles personalizados, comencé a refactorizar el código del ValueBox que contenía algunos bugs, pero rápidamente me di cuenta que como estaba estructurado el código me llevaría mucho trabajo. Cuando le comenté esto a Benoit me dijo que tenía previsto reescribir el código de ValueBox, pero que antes de hacerlo tenía pensado escribir un control MaskBox que serviría como apoyo.
Gambas3 incluye desde hace algún tiempo ese control MaskBox que es un control TextBox que te permite restringir las entradas del usuario de una manera muy flexible. Es decir, que en Gambas3 no necesitarías crear un TextBox personalizado para hacer eso.
Un motivo más para comenzar a migrar a Gambas3.
=================== Cómo programar con Gambas
Speed Books: informática libre.
|
#7 Sabado, 20 Agosto 2011, 19:13 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
todavía no e revisado el 3
pero si el maskedit es similar al de .net asi como viene
si colocas solo números y usas el carácter _ de mascara acepta valores 1_2_3 escribiéndolos o pegándolos
y 1_2_3 no es un numero valido para operaciones matemáticas por lo tanto no sirve
pero si serviria para otros propositos como que el numero ingresado tenga que obligatoriamente usar un formato predeterminado como 1:2:3
en ese caso se definio el maskedit para numeros y mascara = : y en ese caso seria muy practico y mucho mas facil usar el maskedit
volviendo al caso de vb
en vb net
dare algo mas detalles como se hace y lo que quiero hacer en gambas
perdonen por colocar código ajeno
creo una solución
trae un formulario por defecto form1
agrego una clase y escribo el código
'no hay diseñador gráfico
luego doy generar que es equivalente a compilar de gambas y en el cuadro de herramientas aparece un componente llamado supertexbox
el cual puedo usar de inmediato simplemente lo arrastro a un formulario y no hago nada mas
y hago esto mismo en gambas y no es asi
me pasa por intentar hacer las cosas estilo vs net en gambas
|
#8 Domingo, 21 Agosto 2011, 00:35 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
ok después de mucho intentar y leyendo los link
e entendido eso de generar componentes pero son componentes externos ya compilados
el problema es que son componentes compilados o binarios
y la idea es usar solo código dentro del mismo proyecto no hacer un proyecto por componentes, compilarlos y copiarlos al directorio de componentes
la idea es al usar los archivos de clase del proyecto para hacer los componentes heredado de componentes que ya existan
e intentado hacerlos pero gambas error y se cierra
actualizando
como comente en otro hilo
lo que estaba tratabdo de hacer en gambas 2 y no funcionaba en gambas3 funciono
aun no se como manejar los eventos y las propiedades
solo añadí la clase y la nombre texboxsuper luego clic en compilar y automáticamente aparece en las herramientas
el mismo codigo en gambas 2 parece no funcionar
el form lleva un texbox un texboxsuper y un boton
el problema es que no entiendo como se hace para manejar los eventos por ejemplo en la clase texboxsuper agregar codigo al evento keypress y una propiedad
última edición por codificador el Martes, 23 Agosto 2011, 05:43; editado 1 vez
|
#9 Martes, 23 Agosto 2011, 04:54 |
|
|
angelnu
Angel
Programador
Registrado: Septiembre 2009
Mensajes: 106
Edad: 61 Ubicación:
|
Re: Componentes Y Controles De Usuario En Gambas
Citar: el problema es que no entiendo como se hace para manejar los eventos por ejemplo en la clase texboxsuper agregar codigo al evento keypress y una propiedad
Debes interceptar los eventos, para interceptar los eventos debes declararlo
Ejemplo: En la clase texboxsuper
Ya podemos interceptar los eventos que queramos.
Ejemplo: interceptar el evento KeyPress
Yo me hice una adaptación personalizada del control MaskBox, con algunas particularidades, una que me gusta es la posibilidad de formatear el contenido del control.
Con el eventos LostFocus formateo el textbox y con el evento GotFocus recupero el valor del control (sin formato).
|
#10 Miercoles, 24 Agosto 2011, 09:23 |
|
|
|