Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Orden de tabulación en las columnas de un Dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=35433)

monica_martin 11-09-2006 11:51:09

Orden de tabulación en las columnas de un Dbgrid
 
Hola a todos,

llevo años trabajando con Delphi y es la primera vez que me ocurre esto. Estoy trabajando con Delphi 2006 y tengo un Dbgrid donde se insertan y actualizan datos de una tabla. El problema es que dentro de un registro, al pulsar la tecla "tabulador" para cambiar al campo siguiente, el foco va pasando por las distintas columnas del registro de forma desordenada. No hay propiedad "tab" en las columnas del dbgrid y no encuentro ningún sitio donde establecer el orden.
Como he dicho antes, es la primera vez que veo esto, antes trabajaba con Delphi 6, y el orden es el que tienen las columnas en el Dbgrid.

Os agradecería mucho la ayuda, llevo días dándole vueltas y tengo a los usuarios bastante "molestos" con el tema.

Muchas gracias.

leodelca23 11-09-2006 14:47:53

no puedes cambiar el orden de las columnas??

monica_martin 12-09-2006 08:33:34

No puedo cambiar el orden de las columnas, porque no sería un orden lógico.

kuan-yiu 12-09-2006 11:46:51

Lo único que se me ocurre es que el DBGrid tenga una ordenación de columnas y la consulta que lo alimenta otra... Pero aún así.

leodelca23 13-09-2006 14:40:23

espero que sirva
 
Mira buscando ayuda para mi programa de facturacion e inventario que me esta rompiendo la cabeza he encontrado esto que creo que te puede servir lo he modificado un poco pero funciona:
es el codigo de usar la tecla enter como tab dentro de un TBDgrid ,Creo que de esa forma puedes cambiar el orden del tab cambiando el selectindex:
procedure Ttabla.DBGrid1KeyPress(Sender: TObject; var Key: Char);

begin
if Key = #13 then { si es la tecla <enter> }
if not (ActiveControl is TDBGrid) then { si no es un TDBGrid }
begin
Key := #0; { nos comemos la tecla }
Perform(WM_NEXTDLGCTL, 0, 0); { vamos al siguiente control }
end
else
if (ActiveControl is TDBGrid) then { si es un TDBGrid }
with TDBGrid(ActiveControl) do
if selectedindex < (fieldcount -1) then
selectedindex := selectedindex +1
else
selectedindex := 0;
end;
Lo he probado y funciona bien entonces la idea es cambiar la incrementacion del selectedindex , bueno ahi esta . Ya que me estoy volviendo loco. Saludos
Si tienes un tiempo y me puedes ayudar con lo de la facturacion e inventario te lo agradeceria. Gracias


La franja horaria es GMT +2. Ahora son las 10:38:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi