Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Grilla mejor que dbGrid (https://www.clubdelphi.com/foros/showthread.php?t=88701)

Carmelo Cash 18-07-2015 21:52:50

Grilla mejor que dbGrid
 
Hola Foro:

Estoy haciendo una interface para asientos contabes y estoy utilizando un rxMemoryTable y un dbgrid para cargar las cuentas y los importes en Debe y Haber.

La consulta es si existe un DbGrid más lindo y que permita cambiar las posiciones de las filas, o sea que el usuario pueda subir y bajar las cuentas?

Estoy usando Delphi 7 y Firebird.

Desde ya muchas gracias por su atención.

Casimiro Noteví 18-07-2015 22:57:47

Las posiciones de las filas dependen de la consulta sql del dataset que hayas enlazado al dbgrid, mediante su datasource.
Lo que sí puedes hacer es agrupar, mover las columnas, etc. con algunos otros dbgrid.

Carmelo Cash 18-07-2015 23:18:51

Gracias Casimiro, ¿Sabés que otro DbGrid puedo usar que permita subir y bajar filas?

Casimiro Noteví 18-07-2015 23:37:12

Cita:

Empezado por Carmelo Cash (Mensaje 494603)
Gracias Casimiro, ¿Sabés que otro DbGrid puedo usar que permita subir y bajar filas?

goto #2 ;)

Carmelo Cash 19-07-2015 00:12:19

No sé. No entiendo. :(

Casimiro Noteví 19-07-2015 00:22:16

Las posiciones de las filas dependen de la consulta sql del dataset que hayas enlazado al dbgrid, mediante su datasource.

Si quieres cambiar las posiciones, debes cambiar el orden en el sql.
O no usar un dbgrid, sino un stringgrid, o algo similar.

Carmelo Cash 19-07-2015 00:27:05

Ok. Gracias.

Casimiro Noteví 19-07-2015 00:41:23

Por favor, si no lo has entendido, no dudes en preguntar de nuevo, te lo aclaro con un ejemplo si es necesario.

gatosoft 19-07-2015 06:45:33

Hola Carmelo..

No tengo presente ahora un compornnte Free que pueda hacer lo que dices en Delphi 7. Pero concuerdo con Casimiro en su aprecisión en la que dice que la posición d elas Filas depende mas de la Consulta (Query) que de la Grilla.

Nunca he manejado el RxMemoryTable, pero si funciona como creo, podrías intentar un "truco" para ordenar la grilla. Esto sería agregando a tu consulta un campo "Orden" que se numerara secuencialmente de manera que tu consulta se ordene por este campo (el componente MemoryTable debería tener una opcion para ordenar por este campo)

Cuando intentes hacer el cambio de orden en la grilla, podrias intercacambiar el valor de este campo con sus vecnos (arriba, abajo) y nuevamente generar el re-ordenamiento... (hay que hacer ucho trabajo manual, pero podria funcionarte mientras lo resuelves mejor)

Saludo,

AgustinOrtu 19-07-2015 07:17:23

EDITO:
Bueno, entendi cualquier cosa :D mejor borro lo que puse que nada que ver

En fin, creo que lo mejor es usar un TClientDataSet. En tu ClientDataSet deberias tener un campo numerico de orden como menciona gatosoft, y luego lo que haces es permitirle aumentar o decrementar ese numero. Luego reordenas el dataset. Es decir, te tendria que quedar algo como esto

Código Delphi [-]
procedure TForm1.BtnMoveUpClick(Sender: TObject);
begin
  if cds.First then
    Exit;

  try
    cds.Edit;
    cds.FieldByName('Order').AsInteger := cds.FieldByName('Order').AsInteger - 1;
  finally
    cds.Post;
    // ordenar dataset
  end;
end;

Otra forma de verlo es utilizar cursores. Hay un pdf excelente de Cary Jensen (si mal no recuerdo, y espero haber escrito bien su nombre) en el FTP del club que no tiene desperdicio

Casimiro Noteví 19-07-2015 10:23:58

Desde luego que hay formas de hacer lo que quiere, pero no creo que encuentro un componente dbgrid que lo haga. Tendrá que ser manualmente.

avmm2004 19-07-2015 12:04:08

Hola a todos, yo creo que de lo que se trata es que sea el usuario final al interactuar con el dbgrid el que pueda cambiar las columnas, agruparlas, etc.... para ello uno de los que lo hacen muy bien (entre otro montón) son los componentes de http://www.devexpress.com.

Casimiro Noteví 19-07-2015 13:42:24

Cita:

Empezado por avmm2004 (Mensaje 494616)
Hola a todos, yo creo que de lo que se trata es que sea el usuario final al interactuar con el dbgrid el que pueda cambiar las columnas, agruparlas, etc.... para ello uno de los que lo hacen muy bien (entre otro montón) son los componentes de http://www.devexpress.com.

Pregunta por mover las filas arriba/abajo.


La franja horaria es GMT +2. Ahora son las 00:02:58.

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