https://foro.gambas-es.org/viewtopic.php?f=10&t=6380
-----------------------------------
shordi
Miercoles, 17 May 2017, 10:32

TableEdit: Ejemplo De Uso
-----------------------------------
He subido un video-tutorial del uso del control TableEdit que tenéis en la granja de Gambas.
En él os muestro partiendo desde cero cómo:

-Añadirlo a vuestros proyectos
-Usarlo con su comportamiento por defecto
-Ampliar los tipos de controles que utiliza para campos en concreto
-Establecer depuraciones en los datos introducidos
-Cancelar la grabación de la celda por defecto.

Dura media hora más o menos, pero si descontáis los tartamudeos, vacilaciones, pausas, errores, estornudos, accidentes, repeticiones y equivocaciones, se os quedará en minuto y medio más o menos.

 :mryellow:  :mryellow:  :mryellow: 

[youtube]5P8QELzyzOI[/youtube]


-----------------------------------
tincho
Miercoles, 17 May 2017, 13:35

Re: TableEdit: Ejemplo De Uso
-----------------------------------
+1 Shordi.

Este tipo de videos en general son muy útiles para comprender como se gestionan las bases de datos y en particular este vendra muy bien a los usuarios noveles que quieran usar bases de datos en sus programas.
He aprendido que el botón de compilar sirve para que aparezca el icono de la clase. :mryellow: 

Me parece útil dejar en el hilo es que es siempre conveniente usar como nombres de campos todo en minúsculas que sean caracteres ASCII y sin espacios ni puntos. para mantener una compatibilidad entre distintos motores de bases de datos y para no confundirse al escribir el código, ya que es una fuente de errores, como te paso a ti varias veces en el video  ;-) .
Si luego se quiere tener el nombre del campo en el grid con la primera letra en mayúscula, se puede hacer mediante 
[code linenumbers=false syntax=gambas]
'...
  For n = 0 To tbE1.Result.fields.Count - 1
    strTitle = String.UCaseFirst(tbE1.Result.Fields[n].name)
    tbE1.Columns[n].title = strTitle
  Next
'...
[/code]

Luego para no repetir, en este caso, las comunidades se puede hacer un IF en el bucle.
[code linenumbers=false syntax=gambas]
  Dim strText as String
 '.... 
  While r.Available
    strText=r!comunidad
    if ar.Find(strText) > -1 then ' Para evitar repeticiones en caso que la tabla no las tenga.
    ar.Add(strText)
    Endif
    r.MoveNext
  Wend 
'...
[/code]

Saludos.


-----------------------------------
shordi
Miercoles, 17 May 2017, 17:45

Re: TableEdit: Ejemplo De Uso
-----------------------------------
En mis bases de datos simpre uso minúsculas. El tema era que quería que el control quedase con los nombres bonitos sin tener que hacer tejemanejes de estos, que confunden aún más al novato y alargan el vídeo. Por tanto puse los nombres con mayúscula en la tabla viajes y la falta de costumbre y demás ocasionó los errores que se ven.

Eso y no manta y novato que soy haciendo vídeos, claro...  :mryellow:  :mryellow:  :mryellow:


-----------------------------------
jsbsan
Miercoles, 17 May 2017, 20:29

Re: TableEdit: Ejemplo De Uso
-----------------------------------
Shordi:

Muy buen videotutorial. +1

Tincho:

[quote]Me parece útil dejar en el hilo es que es siempre conveniente usar como nombres de campos todo en minúsculas que sean caracteres ASCII y sin espacios ni puntos. para mantener una compatibilidad entre distintos motores de bases de datos y para no confundirse al escribir el código, ya que es una fuente de errores, como te paso a ti varias veces en el video   .
[/quote]
Buen apunte.

[code linenumbers=false syntax=gambas]tbE1.Columns[n].title = strTitle[/code]
Para el tema de las traducciones, hay que tener en cuenta, que no es buena idea usar el nombre del campo como nombre de la columna, porque no se va  a traducir al cambiar el idioma.


-----------------------------------
tincho
Miercoles, 17 May 2017, 20:48

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote user="jsbsan" post="38250"]...Para el tema de las traducciones, hay que tener en cuenta, que no es buena idea usar el nombre del campo como nombre de la columna, porque no se va  a traducir al cambiar el idioma.[/quote]
Si, es verdad, yo vengo usando el siguiente "método" para los programas que usan bases.
Partiendo de que las tablas y por lo tanto sus campos serán invariables para un programa dado, lo que hago es colocar una función en el módulo de inicio del programa donde agrego a una matriz de texto los nombres de los campos de la tabla, entonces el campo 0=stxTitles[0] ... n=stxTitles[n].
Este titulo del campo esta agregado de esta manera:
Nota: La matriz es de tres dimensiones de la forma ["tabla-o-vista", "nombre-del-campo", ("Titulo-traducible")]. De esta manera las consultas SQL las tablas y las vistas son siempre las mismas, solo varia el texto que se "ve" en los Gridwiews u otros sitios, por ejemplo los formularios de edición de datos.

[code linenumbers=false syntax=gambas]
Private Function LoadTitles() '' La carga de títulos de esta manera permite luego traducir la aplicación mas fácilmente. Si se usa un método con archivo de texto estos textos no pueden traducirse.

  stxTitles.Add(["contacts", "contactindx", ("Índice")])
  stxTitles.Add(["contacts", "contactname", ("Nombre")])
  '...
  stxTitles.Add(["countries", "countryindx", ("Índice")])
  stxTitles.Add(["countries", "countryname", ("País")])
  '...
  stxTitles.Add(["groups", "groupindx", ("Índice")])
  stxTitles.Add(["groups", "groupname", ("Grupo")])
  '...
  stxTitles.Add(["provinces", "provinceindx", ("Índice")])
  stxTitles.Add(["provinces", "provincename", ("Provincia")])
  '...
  stxTitles.Add(["roles", "roleindx", ("Índice")])
  stxTitles.Add(["roles", "rolename", ("Rol")])
  '...
  stxTitles.Add(["sections", "sectionindx", ("Índice")])
  stxTitles.Add(["sections", "sectionname", ("División")])
  '...
  stxTitles.Add(["view_contacts", "contactindx", ("Índice")])
  stxTitles.Add(["view_contacts", "contactname", ("Nombre")])

End
[/code]

Luego el el programa cuando se quiera poner el nombre del campo tal o cual, solo basta con extraerlo de la matriz [b]stxTitles[/b].

En github deje un ejemplo de un programa agenda de contactos en donde aplico dicho método:
https://github.com/belmotek/tocontac

Saludos.


-----------------------------------
shordi
Miercoles, 17 May 2017, 20:49

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote user="jsbsan" post="38250"]Shordi:

Muy buen videotutorial. +1

Tincho:

[quote]Me parece útil dejar en el hilo es que es siempre conveniente usar como nombres de campos todo en minúsculas que sean caracteres ASCII y sin espacios ni puntos. para mantener una compatibilidad entre distintos motores de bases de datos y para no confundirse al escribir el código, ya que es una fuente de errores, como te paso a ti varias veces en el video   .
[/quote]
Buen apunte.

[code linenumbers=false syntax=gambas]tbE1.Columns[n].title = strTitle[/code]
Para el tema de las traducciones, hay que tener en cuenta, que no es buena idea usar el nombre del campo como nombre de la columna, porque no se va  a traducir al cambiar el idioma.[/quote]
¿Es que se traducen los nombres de campos o de controles?
No creo. Eso te hunde una base de datos en un instante.
Que se traduzcan literales es una cosa, pero los nombres son nombres... Creo (Nunca he visto el resultado de una traducción)


-----------------------------------
tincho
Jueves, 18 May 2017, 10:49

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote user="shordi" post="38253"]¿Es que se traducen los nombres de campos o de controles?[/quote]
El planteo es traducir los "Títulos" asociados a los campos no sus nombres. Por títulos de los campos se entiende que es el texto que se ve en las columnas de los [i][b]gridviews[/b][/i] o en las [i][b]labels[/b][/i] de los formularios de edición. Es decir de los controles.

Saludos.


-----------------------------------
jsbsan
Jueves, 18 May 2017, 11:25

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[b]Shordi:[/b]

[quote]¿Es que se traducen los nombres de campos o de controles?[/quote]
A lo que me refiero es lo que explica Tincho:
[quote]Por títulos de los campos se entiende que es el texto que se ve en las columnas de los gridviews o en las labels de los formularios de edición. [/quote]

Las consultas a la base de datos, ni los nombres de los campos de la base de datos, no entran en la conversión en las traducciones.

[b]Tincho:[/b]
[quote]La matriz es de tres dimensiones de la forma ["tabla-o-vista", "nombre-del-campo", ("Titulo-traducible")][/quote]
Interesante método... me lo tengo que ver con tranquilidad.


-----------------------------------
shordi
Jueves, 18 May 2017, 11:54

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote]El planteo es traducir los "Títulos" asociados a los campos no sus nombres. Por títulos de los campos se entiende que es el texto que se ve en las columnas de los gridviews o en las labels de los formularios de edición. Es decir de los controles.[/quote]

En los controles dbGrid, dbgridfilter, etc. añadí una propiedad Titles as String[] que solucionaba el tema. Más simple que una tridimensional, creo.
En este control no lo he añadido.

Saludos

 :mryellow:  :mryellow:


-----------------------------------
tincho
Jueves, 18 May 2017, 12:23

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote user="jsbsan" post="38260"][b]Tincho:[/b]
[quote]La matriz es de tres dimensiones de la forma ["tabla-o-vista", "nombre-del-campo", ("Titulo-traducible")[/quote]
Interesante método... me lo tengo que ver con tranquilidad.[/quote]
Es bastante práctico la verdad, ademas permite expandir las dimensiones de la matriz si es necesario agregar mas parámetros, como por ejemplo el [i]tooltip[/i] del campo.
Si te interesa verlo en funcionamiento échale un vistazo al programa [url=https://github.com/belmotek/tocontac]Tocontac.

Saludos.


-----------------------------------
tincho
Jueves, 18 May 2017, 12:27

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote user="shordi" post="38262"]En los controles dbGrid, dbgridfilter, etc. añadí una propiedad Titles as String[] que solucionaba el tema. Más simple que una tridimensional, creo. En este control no lo he añadido[/quote]
Si es mas simple, pero no se pueden traducir los títulos, es decir cada ítem de la matriz. Es una pega para cuando quieres que el programa sea compatible con otros idiomas.

Saludos.


-----------------------------------
shordi
Jueves, 18 May 2017, 12:49

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote user="tincho" post="38265"][quote user="shordi" post="38262"]En los controles dbGrid, dbgridfilter, etc. añadí una propiedad Titles as String[] que solucionaba el tema. Más simple que una tridimensional, creo. En este control no lo he añadido[/quote]
Si es mas simple, pero no se pueden traducir los títulos, es decir cada ítem de la matriz. Es una pega para cuando quieres que el programa sea compatible con otros idiomas.

Saludos.[/quote]
¿Seguro? Creo que si en tu código incluyes 

[code linenumbers=false syntax=gambas]midbGrid.aTitles=[("titulo 1"),("titulo 2")][/code]

Eso se incluirá en la traducción sin problemas.


-----------------------------------
tincho
Jueves, 18 May 2017, 13:01

Re: TableEdit: Ejemplo De Uso
-----------------------------------
[quote user="shordi" post="38267"]¿Seguro? Creo que si en tu código incluyes 
[code linenumbers=false syntax=gambas]midbGrid.aTitles=[("titulo 1"),("titulo 2")][/code]
Eso se incluirá en la traducción sin problemas.[/quote]
Tienes razón si lo pones así se puede traducir perfectamente.

Saludos.


