Ir al contenido


Foto

[RESUELTO] Una forma, muchos TDbGrid's..., y cómo ajustarlos.


  • Por favor identifícate para responder
6 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 25 noviembre 2011 - 11:59

Buen día, jóvenes, espero que se estén divirtiendo mucho.

Les platico. Tengo una forma con alrededor de 10 TDbGrid's, repartidas en varias pestañas. Algunas de ésas rejillas tienen muchas columnas, otras pocas, algunos muchos datos y otros menos. Pero cada vez que le cambio el tamaño, requiero que se ajusten TODAS las rejillas al nuevo tamaño de la forma, independientemente de su nombre o de su contenido. ¿Podrían colaborarme un poco con ideas y/o código de solución?

Ya intenté la solución que se plantea en algunos posts de Delphi.About, pero no me sirven aún y a pesar de adaptarlos hasta la saciedad.

Agradeciendo de antemano.
  • 0

#2 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 25 noviembre 2011 - 12:57

Hola TiammatMX, has de plantearte como quieres su visualización, te recomendaria que pusieses paneles, por cada 2 o tres grids y si es de doa, 1 en align top o Botton y el otro en cliente, en los paneles igual que los Grids, usando la propiedad alingn, creo que te puedes hacer una idea. Espero sinceramente que te ayude.
  • 0

#3 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 25 noviembre 2011 - 01:12

Como bien dice Desart, tienes que plantearte primero de todo cómo quieres ver la pantalla. Una vez decidido esto, tienes que jugar con paneles, con las propiedades align y alignement y/o anchors,.....

Nos leemos

  • 0

#4 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 25 noviembre 2011 - 01:18

El problema es si ya está todo montado,  de lo contrario la solución es muy simple, un TFrame con un grid sirve de Base y de allí heredas el resto, luego con cambiar propiedades en la base se propagaría al resto.

Una opción sería recorrer los componentes, aislar los dbGrids, y cambiar las propiedades que necesitas.



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   k: integer;
  4. begin
  5.   for k := 0 to self.ComponentCount - 1 do
  6.     if self.Components[k].ClassType = TDbGrid then
  7.     begin
  8.       TDbGrid(Components[k]).Width = self.Width;
  9.       //cambias las propiedades que necesites cambiar
  10.     end;
  11.  
  12. end;



Este mismo código lo podrías poner en el evento OnResize del form.

Saludos
  • 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 25 noviembre 2011 - 02:44

Gracias por las aportaciones. No puedo meterle más componentes, la forma ya me la dieron hecha y no puedo hacerle nada más, excepto por código...

En los tips de DelphiAbout vienen un par de ideas que se ajustan a lo que necesito PERO el problema principal es que como se trabajan sobre TADOQuery's y no sobre TADOTable's no me es posible implementarlos. Necesito más ideas, por favor...
  • 0

#6 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 25 noviembre 2011 - 03:29

El  código que te pasé debería servirte,  lo utilizas en el evento OnResize del form y puede cambiar las propiedades que necesites (top, widht, left,  etc);

Saludos
  • 0

#7 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 25 noviembre 2011 - 03:41

El  código que te pasé debería servirte,  lo utilizas en el evento OnResize del form y puede cambiar las propiedades que necesites (top, widht, left,  etc);

Saludos


Lo acabo de probar y funciona perfecto.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.