Ir al contenido


Foto

Ocultar columnas en TDBGrid, y mi primera vez.


  • Por favor identifícate para responder
14 respuestas en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 27 septiembre 2012 - 04:40

Pues nada, jóvenes, les platico mi problema.

Resulta que tengo una rejilla (TDbGrid) donde mostraré los datos de una serie de sentencias SQL, nada del otro mundo ciertamente, EXCEPTO que dado el valor de un TComboBox, se debe o no mostrar una columna de la rejilla, es decir, si el valor del TComboBox es "Mostrar", se mostrará la columna, si es "Esconder" o ningún valor, la columna no debe aparecer en el TDbGrid.

Yo, programador acostumbrado a manejar el TDbGrid como parte del trabajo diario, quise eliminar la columna "a la brava" y OBVIAMENTE el TDbGrid y la aplicación respingaron, se trabaron y no avanzaron (moraleja: No hagas ideas nuevas sin consultar a los profesionales).

... y aquí es donde entra la comunidad de DelphiAccess. Concretamente, ¿podrían orientarme en cómo generar columnas "al vuelo" en un TDbGrid, así como eliminarlas sin que proteste mi aplicación? De antemano, agradezco la atención.
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 27 septiembre 2012 - 05:07

Hola



delphi
  1. TablaTU_CAMPO.Visible := false;



Digo, pa' que tanto rollo de eliminar y agregar  (h)

Saludos
  • 0

#3 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 27 septiembre 2012 - 07:11

Hola



delphi
  1. TablaTU_CAMPO.Visible := false;



Digo, pa' que tanto rollo de eliminar y agregar  (h)

Saludos


Gracias, Eliseo..., ese tipo de soluciones sencillas y elegantes es lo que me hace falta...
  • 0

#4 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 27 septiembre 2012 - 08:37

Esos títulos TiammatMX... nada descriptivos (a excepción de la palabra TDBGrid en él  ^o|)...

Saludox ! :)
  • 0

#5 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 28 septiembre 2012 - 08:49

Esos títulos TiammatMX... nada descriptivos (a excepción de la palabra TDBGrid en él  ^o|)...

Siempre me he preguntado por qué nomás a mí me regañan en público. O me llaman la atención, como quieran llamarlo... ¬¬

...

delphi
  1. TablaTU_CAMPO.Visible := false;



Digo, pa' que tanto rollo de eliminar y agregar  (h)...

Elegante, muy práctico..., pero no aplicable en mi caso. Algo falta por que aún me sigue mostrando la columna.

jejejejeje  Y sigo batallando con el código para crear dos "versiones" del TDbGrid en tiempo de ejecución... jejejejeje
  • 0

#6 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 28 septiembre 2012 - 09:14



delphi
  1. procedure TForm1.ComboBox1Change(Sender: TObject);
  2. var
  3.   k: integer;
  4. begin
  5. for k :=  0 to DBGrid1.Columns.Count -1  do
  6.   if DBGrid1.Columns[k].FieldName = 'TuCampo' then
  7.   if ComboBox1.Text = 'Mostrar' then
  8.     DBGrid1.Columns[k].Visible := true
  9.     else
  10.     DBGrid1.Columns[k].Visible := false;
  11. end;


  • 0

#7 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 28 septiembre 2012 - 09:18

Saludos.

Este código quizás te pueda servir:



delphi
  1. DBGrid1.Columns[0].Visible := False;


  • 0

#8 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 28 septiembre 2012 - 09:32


Siempre me he preguntado por qué nomás a mí me regañan en público. O me llaman la atención, como quieran llamarlo... ¬¬


No es solo a ti a quién se le llama la atención, y si no me dejan mentir los demás moderadores, a muchos compañeros se les ha pedido corregir preguntas, títulos o en su defecto reubicar sus solicitudes, todo de manera pública a través de sus hilos. No es, para nada, según mi consideración y creo la de muchos, un regaño, ni una fijación personal. Es en aras de mantener ordenada la casa.....


  • 0

#9 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 28 septiembre 2012 - 09:39



Siempre me he preguntado por qué nomás a mí me regañan en público. O me llaman la atención, como quieran llamarlo... ¬¬


No es solo a ti a quién se le llama la atención, y si no me dejan mentir los demás moderadores, a muchos compañeros se les ha pedido corregir preguntas, títulos o en su defecto reubicar sus solicitudes, todo de manera pública a través de sus hilos. No es, para nada, según mi consideración y creo la de muchos, un regaño, ni una fijación personal. Es en aras de mantener ordenada la casa.....



Saludos.

Creo más bien que se hace dicha solicitud en favor de la propiedad comunidad, para tener cierta facilidad al buscar temas.

Supongo que con títulos no relativos a al tema de debate es un tanto complicado encontrar dicho hilo si su título no se refiere para nada en lo que ando buscando.

En mi haber personal, he corregido ajenos y propios por las mismas sugerencias hechas por los Mods y Admin.

Solo una opinión personal y hago la siguiente observación, no debemos de debatir este tema en este hilo para no desvirtuarlo. (Aunque ya empece)
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 septiembre 2012 - 10:02

Una pregunta


...

delphi
  1. TablaTU_CAMPO.Visible := false;



Digo, pa' que tanto rollo de eliminar y agregar  (h)...

Elegante, muy práctico..., pero no aplicable en mi caso. Algo falta por que aún me sigue mostrando la columna.

jejejejeje  Y sigo batallando con el código para crear dos "versiones" del TDbGrid en tiempo de ejecución... jejejejeje


Una pregunta, tienes los campos creados en el DBGrid ?

Si es así no va a funcionar, quita todos los campos del DBGrid y mi propuesta funcionará sin problemas, así lo hacemos en nuestros sistemas y no hay fallo, sólo se muestran los campos que queremos.

Saludos

  • 0

#11 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 28 septiembre 2012 - 10:28

Una pregunta, tienes los campos creados en el DBGrid ?

Si es así no va a funcionar, quita todos los campos del DBGrid y mi propuesta funcionará sin problemas, así lo hacemos en nuestros sistemas y no hay fallo, sólo se muestran los campos que queremos.

Saludos

Sí, campos creados en TDbGrid y en TADOQuery que son los componentes que estoy usando. Posiblemente, estoy haciendo algo mal, pero aún no logro "cachar" en qué es lo que estoy mal.

Como sea, el caso es que estoy "picando piedra" un rato para resolver ésto...



delphi
  1. procedure TForm1.ComboBox1Change(Sender: TObject);
  2. var
  3.   k: integer;
  4. begin
  5. for k :=  0 to DBGrid1.Columns.Count -1  do
  6.   if DBGrid1.Columns[k].FieldName = 'TuCampo' then
  7.   if ComboBox1.Text = 'Mostrar' then
  8.     DBGrid1.Columns[k].Visible := true
  9.     else
  10.     DBGrid1.Columns[k].Visible := false;
  11. end;


Algo así estoy haciendo, Wilson. Y sobre de ello estoy..., gracias, ahí voy, haciendo caminito...

Respecto a lo del título, ¿por qué no dejamos el tema en paz? Lo cambié a un justo medio (ni ustedes ni yo) y supongo que se han dado cuenta que intento mantenerme ecuánime en CASI cualquier situación, tomando en cuenta que en un principio hasta nombres de películas usaba para titular mis posts. No quiero ni voy a entrar en una polémica estéril e infructuosa, haré mi mejor esfuerzo por observar el estilo de titulación requerido, pero no prometo que haré un giro de 180º en ello. Nadie lo puede hacer, nadie lo hará. Punto final (mío al menos) en el tema de mis títulos con gracia.
  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 septiembre 2012 - 01:16


Una pregunta, tienes los campos creados en el DBGrid ?

Si es así no va a funcionar, quita todos los campos del DBGrid y mi propuesta funcionará sin problemas, así lo hacemos en nuestros sistemas y no hay fallo, sólo se muestran los campos que queremos.

Saludos

Sí, campos creados en TDbGrid y en TADOQuery que son los componentes que estoy usando. Posiblemente, estoy haciendo algo mal, pero aún no logro "cachar" en qué es lo que estoy mal.


Ya hiciste la prueba con lo que te dije, borra los campos de tu DBGrid, el TADOQuery te los agregará de forma dinámica, dependiento de los campos que quieras mostrar.

Saludos
  • 0

#13 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 28 septiembre 2012 - 02:32

...
Ya hiciste la prueba con lo que te dije, borra los campos de tu DBGrid, el TADOQuery te los agregará de forma dinámica, dependiento de los campos que quieras mostrar.
...


Sí, ya la hice y en un ambiente dinámico trabaja perfectamente. El problema es que son columnas fijas, y algunas de ellas se colorean, por lo que el "recrearlas" corro el riesgo de no poder ejecutar los procesos que le dan la funcionalidad requerida.
  • 0

#14 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 septiembre 2012 - 02:42


...
Ya hiciste la prueba con lo que te dije, borra los campos de tu DBGrid, el TADOQuery te los agregará de forma dinámica, dependiento de los campos que quieras mostrar.
...


Sí, ya la hice y en un ambiente dinámico trabaja perfectamente. El problema es que son columnas fijas, y algunas de ellas se colorean, por lo que el "recrearlas" corro el riesgo de no poder ejecutar los procesos que le dan la funcionalidad requerida.


Me parece que con unos cuantos pases mágicos funcionaría igual para datos dinámicos como lo hace para datos estáticos, es cosa de tener imaginación.

"La imaginación es más importante que el conocimiento"

Por ejemplo, así a ojo de buen cubero, yo usaría la propiedad Tag para determinar que columna se va a mostrar, colorear, etc.

Digo, no se.....

Saludos

  • 0

#15 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 28 septiembre 2012 - 04:38



delphi
  1. DBGrid1.Columns[0].Visible := ComboBox1.Text = 'Mostrar'



Nos leemos
  • 0




IP.Board spam blocked by CleanTalk.