https://foro.gambas-es.org/viewtopic.php?f=10&t=5545
-----------------------------------
shordi
Domingo, 12 Junio 2016, 12:18

Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Aquí tenéis el enlace de la segunda parte de los tutoriales sobre la creación de controles. En este caso vemos la creación de un control compuesto al que he llamado filebox.

Se me ha ido un poco la duración, 34 minutos, pero espero que os sea de provecho.

[youtube]ujVLiTWWFnU[/youtube]


-----------------------------------
shordi
Domingo, 12 Junio 2016, 18:31

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Igual que la otra vez, se me olvidaba subir el código fuente del vídeo. Ya lo tenéis.


-----------------------------------
Shell
Lunes, 13 Junio 2016, 09:02

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Buen tutorial.

Cuestiones:

¿ Por qué usas nombres de clases similares al nombre del proyecto ?. ¿ No crees que crean algún tipo de conflicto ?.

¿ Sabías que la palabra "default" es una palabra reservada del lenguaje Gambas ?.

[url=http://gambaswiki.org/wiki/lang/select]Select Case. Default

Como siempre uso Case Else.

Creo que pudiera ser interesante, añadir en el mensaje, tus comentarios personales, que crees que le falta al vídeo,
o se le debería añadir. Como tu mismo comentabas, hubiera sido mejor heredar de ButtonBox. Por ejemplo.

La verdad es que sí, que buttonbox quizás a lo mejor podría haber hecho la función :???: . 

Y cosas así. Por lo demás, perfecto. 

P.d : ¿ Juegas a la quiniela  con muchas variantes ?. Te gustan las X's.  :twisted: 

Saludos


-----------------------------------
shordi
Lunes, 13 Junio 2016, 09:21

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
[quote]

¿ Por qué usas nombres de clases similares al nombre del proyecto ?. ¿ No crees que crean algún tipo de conflicto ?.
[/quote]

Nunca he tenido ningún problema con eso...

[quote]¿ Sabías que la palabra "default" es una palabra reservada del lenguaje gambas ?.

Select Case. Default

Como siempre uso Case Else.
[/quote]
Pues no lo sabía. Tampoco he tenido problemas con eso. Como mucho he tenido que usar alguna vez los corchetes {} rodeando una propiedad para no confundir al compilador con palabras reservadas y propiedades que se llamen igual.

[quote]Creo que pudiera ser interesante, añadir en el mensaje, tus comentarios personales, que crees que le falta al vídeo,
o se le debería añadir. Como tu mismo comentabas, hubiera sido mejor heredar de ButtonBox. Por ejemplo.[/quote]
Esperando estoy lo contrario. Que vosotros realimentéis el vídeo con qué no ha quedado claro y qué os ha parecido. Desde mi sillón las cosas se ven de una forma u otra. 
[quote]La verdad es que sí, que buttonbox quizás a lo mejor podría haber hecho la función .[/quote]
Ya lo comenté en el vídeo, uso un form porque si lo hiciese desde buttonbox o dirbox, además de no ser un control compuesto, todo sería código y el vídeo sería un coñazo.


[quote]P.d : ¿ Juegas a la quiniela  con muchas variantes ?. Te gustan las X's.  
[/quote]
El fútbol y yo nos odiamos mutuamente de toda la vida. Lo de las x viene del primer control que hice, que se era un GridView con propiedades de ordenación y demás, o sea un Grid extendido. Le puse la x, xGrid, y palante. Ahora lo hago por no pensar más. Si hay sugerencias de nombres que queden bien, yo encantado.

Saludos


-----------------------------------
v3ctor
Miercoles, 15 Junio 2016, 15:32

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
excelente tutorial, yo estoy muy interesado en estos temas ya que se trata de imaginación y creación.

esta parte de programación dedicada a crear clases gráficas para mi es apasionante además de darle belleza, elegancia y personalidad a nuestra propia aplicación.

lo mirare varias veces para que me queden grabados los conceptos, como .proxy  y demás cosas mencionadas.

anímate hacer mas de estos ya que acelerara el avance de todos en la programación.

saludos y gracias.


-----------------------------------
jsbsan
Jueves, 16 Junio 2016, 09:53

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Shordi:

Muy buen videotutorial, estas hecho un máquina  :mryellow:  :mryellow: 


Preguntillas:
1)  Para instalar el componente en otra máquina, ¿hay que crear el archivo .deb para instalarlo ¿no? 
2)  Si creo una aplicación,  uso tu componente, y creo el archivo .deb, para instalarlo habría que tener el .deb del componente previamente instalado ¿no?, porque si no van a faltar dependencias.
3) Para evitar lo del punto 2, ¿es posible añadir en el .deb del programa, el .deb del componente, y asi se instalaria todo a la vez?

4) Nos tienes que hacer un video tutorial, de como crear PPA 


Saludos

Julio


-----------------------------------
shordi
Jueves, 16 Junio 2016, 10:19

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
[quote user="jsbsan" post="32878"]Shordi:

Muy buen videotutorial, estas hecho un máquina  :mryellow:  :mryellow: 


Preguntillas:
1)  Para instalar el componente en otra máquina, ¿hay que crear el archivo .deb para instalarlo ¿no? [/quote]
Sí, es la manera natural para hacerlo.

[quote]2)  Si creo una aplicación,  uso tu componente, y creo el archivo .deb, para instalarlo habría que tener el .deb del componente previamente instalado ¿no?, porque si no van a faltar dependencias.
[/quote]
Naturalmente

[quote]3) Para evitar lo del punto 2, ¿es posible añadir en el .deb del programa, el .deb del componente, y asi se instalaria todo a la vez?
[/quote]

No se puede añadir el deb (al fin y al cabo no deja de ser un archivo comprimido) Lo que sí puedes hacer es copiar el ejecutable del componente (xControles.gambas) en la carpeta de tu directorio y añadirla al proyecto como Librería (no como componente). A partir de ahí puedes instanciar y utilizar todos los controles del componente... [i][b]Pero sin la integración con el IDE[/b][/i] que es, al fin y al cabo, lo que diferencia una librería de un componente. 
En otras palabras, todas las propiedades de los controles los tienes que suministrar por código (x,y, width, height, expand, y los propios de cada uno conexion, sqlstring, etc.)
Es una opción B.

[quote]4) Nos tienes que hacer un video tutorial, de como crear PPA.[/quote]

En cuanto tenga un ratito, prometido.



Hay una tercera opción de solucionarlo vía código: Haz un programa de instalación un shell script sería suficiente que distribuyes a la peña y que:

-compruebe si existe tu componente instalado y el repositorio estable de Gambas, por ejemplo)

-si no lo existe 
    a) le pida la clave al usuario
    b) lo descargue de algún sitio, junto con el .deb de tu aplicación 
    c) instale el componente (en las dependencias se instalará el runtime de gambas y muchos de los componentes)
    d) instale tu programa.

Es más sencillo de lo que suena... dependiendo, claro, de tu habilidad con el shell.
Cuando distribuyas tu programa distribuyes el shell script de instalación y solucionado.

Saludos


-----------------------------------
shordi
Jueves, 16 Junio 2016, 16:54

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Me auto-cito:
[quote]No se puede añadir el deb (al fin y al cabo no deja de ser un archivo comprimido) Lo que sí puedes hacer es copiar el ejecutable del componente (xControles.gambas) en la carpeta de tu directorio y añadirla al proyecto como Librería (no como componente). A partir de ahí puedes instanciar y utilizar todos los controles del componente... Pero sin la integración con el IDE que es, al fin y al cabo, lo que diferencia una librería de un componente.
En otras palabras, todas las propiedades de los controles los tienes que suministrar por código (x,y, width, height, expand, y los propios de cada uno conexion, sqlstring, etc.)
Es una opción B.[/quote]

Esto me lleva a plantear: 

Si tú tienes el componente instalado, lo utilizas para el diseño de tu programa y cuando esté terminado copias el ejecutable del componente a la carpeta del directorio, desenlazas el componente, enlazas el ejecutable como librería y generas tu .deb... ¿funcionaría todo en la máquina del cliente sólo con ese .deb? 

En teoría sí y así tu tienes la integración con el IDE para el desarrollo y la distribución de un solo .deb para tu cliente. 

Si alguien lo prueba, que lo diga, please.

Saludos


-----------------------------------
Shell
Jueves, 16 Junio 2016, 23:49

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Me he perdió...enlazar, desenlazar, demasié par body, a estas horas.  :o


-----------------------------------
tercoIDE
Miercoles, 20 Julio 2016, 13:26

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
tengo un consulta: como puedo acceder a las propiedades de un control, dentro del control creado?

Mi control es una TableView dentro de un formulario (llamada "Sheet" ), que actua de determinada manera.

Desde el FMain, agrego el control creado por un Clase exportada

Puedo acceder directamente a Sheet o tengo que hacerlo a través de la Clase?

las tableview tienen muchas propiedades y no quiero tener que crearlas una por una en la clase, ej:

(en FMain, con el control creado "Table1" )

Table1.Sheet.Columns.Count = 4  ' accedo directamente al control, dentro del formulario que es un control


-----------------------------------
jguardon
Miercoles, 20 Julio 2016, 14:54

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Revisa la documentación de .Parent y Super

Creo que con eso saldrás de dudas  :mryellow: 

Saludos


-----------------------------------
tercoIDE
Miercoles, 20 Julio 2016, 22:31

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
[quote user="jguardon" post="33474"]Revisa la documentación de .Parent y Super

Creo que con eso saldrás de dudas  :mryellow: 

Saludos[/quote]

no entendi  :oops: 

me parece que Super/Parent  hace referencia al objeto que contiene al control y se usa desde el mismo, yo necesito que el contenedor encuentre una referencia al objeto que esta dentro del control


-----------------------------------
jguardon
Jueves, 21 Julio 2016, 00:39

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Puede que estemos hablando de cosas diferentes, pero si no me equivoco tu necesitas acceder a las propiedades del control del que hereda la "hoja de cálculo" que a su  vez está contenido en un form.

Ese control una vez instanciado en tu formulario de trabajo, es un form que tiene dentro un tableview modificado. Para acceder a la hoja de cálculo, habrás definido una serie de propiedades públicas que son visibles desde el formulario contenedor, pero para acceder al objeto Tableview necesitas buscar el ancestro del form que lo contiene y para acceder a las propiedades originales de ese tableview (porque lo que tu ves es un control heredado) necesitas usar Super.

Es un poco lioso explicado con palabras, pero es cuestión de jerarquía.

No se si te ayuda o te lía más...  :shock: 

Saludos


-----------------------------------
tercoIDE
Jueves, 21 Julio 2016, 01:10

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
lo entendi perfecto ahora, gracias


-----------------------------------
davidbueno
Viernes, 12 Agosto 2016, 14:31

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Muy buen tutorial :)


-----------------------------------
tincho
Sabado, 19 Noviembre 2016, 21:54

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
Shordi: Estoy tus controles para editar registros de tablas, y de paso volví a ver los videos que subiste sobre creación de controles.
No terminaba de entender como hacer para que el aspecto del control sea del estilo del textbox o combobox si por ejemplo el control "tuneado" hereda de alguno de ellos.
 [img]https://foro.gambas-es.org/files/images/2590/xcontroles_1.png[/img]  [img]https://foro.gambas-es.org/files/images/2590/xcontroles_2.png[/img]  [img]https://foro.gambas-es.org/files/images/2590/xcontroles_3.png[/img] 

La solución fue ponerle una linea al principio de la clase y así el control queda similar a los otros controles.

[code linenumbers=false syntax=gambas]
Public Const _DrawWith As String = "ComboBox"
[/code]

Ahora, ¿Como se hace en el caso que se quiera crear un control que tiene un aspecto diferente al control desde el cual hereda?

Por ejemplo en el FileChooser queda igual al DirChooser, como se haría para cambiar el icono de dir por uno de file?

Saludos.


-----------------------------------
shordi
Domingo, 20 Noviembre 2016, 10:30

Re: Creación De Un Control Compuesto: Videotutorial
-----------------------------------
[quote]Shordi: Estoy tus controles para editar registros de tablas, y de paso volví a ver los videos que subiste sobre creación de controles.
No terminaba de entender como hacer para que el aspecto del control sea del estilo del textbox o combobox si por ejemplo el control "tuneado" hereda de alguno de ellos.La solución fue ponerle una linea al principio de la clase y así el control queda similar a los otros controles.

Public Const _DrawWith As String = "ComboBox"

[/quote]

Bueno, es algo que no investigué porque no le dí ninguna importancia. Sin embargo hay que reconocer que así queda mucho mejor. 
Buen aporte.
 :mryellow:  :mryellow: 

[quote]Ahora, ¿Como se hace en el caso que se quiera crear un control que tiene un aspecto diferente al control desde el cual hereda?

Por ejemplo en el FileChooser queda igual al DirChooser, como se haría para cambiar el icono de dir por uno de file?[/quote]
Pues no lo sé. ¿has probado a cambiar la constante _drawWith por otro control?


