PDA

Ver la Versión Completa : Como mostrar con DevExpress la grilla como quedo en la última consulta?


Alexander
16-03-2007, 22:03:38
Hola a todos.

Utilizo DevExpress para visualizar los datos de mis consultas a la base de datos. Yo puedo crear diferentes filtros y consultas en la propia grilla.

Alguien sabe como puedo hacer, para que siempre me quede el ultimo filtro hecho en la grilla?, que la próxima vez que abra, me abra como la deje la última vez?.

Gracais

Alexander

Héctor Randolph
16-03-2007, 23:38:39
Hola Alexander

Las vistas que muestras en un cxGrid dan la opción de guardar los filtros que usa el usuario dentro de un archivo, si lo que quieres es abrir el grid con el filtro más reciente puedes hacer uso de estos métodos para guardarlos y recuperarlos.

Por otra parte, también puedes almacenar la configuración de una vista, es decir, la posición y tamaño de las columnas y el orden de los datos, etc.

De esta forma si el usuario personaliza una vista en la cual agrupa y ordena datos o bien oculta algunas columnas o las mueve o redimensiona con estos métodos puedes almacenar su configuración.

Ahora mismo no recuerdo el nombre de los métodos pero creo que es algo como SaveToRegister, SavetoStream y RestoreFromRegister, en cuanto llegue a mi casa podré decirte con exactitud el nombre de los métodos y como llamarlos, por ahora no tengo DevExpress a la mano.


Saludos

CrazySoft
17-03-2007, 05:01:48
Prueba con esto



procedure TForm1.SaveColPos(Const DbGrid:TDBgrid);
var
Registro :TRegistry;
F :Byte;
begin
Registro:=TRegistry.Create;
Registro.OpenKey('\Software\NombreDelPrograma\Grids',True);
for F:=0 to DbGrid.Columns.Count-1 do
Registro.WriteInteger(DbGrid.Name+'['+IntToStr(F)+']',DbGrid.Columns[F].Width);
Registro.Free;
end;

procedure TForm1.LoadColPos(Var DbGrid:TDBgrid);
var
Registro :TRegistry;
F :Byte;
begin
Registro:=TRegistry.Create;
Registro.OpenKey('\Software\NombreDelPrograma\Grids',False);
if Registro.ValueExists(DbGrid.Name+'[0]') then
for F:=0 to DbGrid.Columns.Count-1 do
DbGrid.Columns[F].Width:=Registro.ReadInteger(DbGrid.Name+'['+IntToStr(F)+']');
Registro.Free;
end;
//**********
-Y ahora, utiliza el evento OnCreate de la form para cargar el ancho de las columnas:

procedure TForm1.FormCreate(Sender: TObject);
begin
LoadColPos(DBGrid1);
end;



-Y para grabar las columnas antes de salir de tu aplicacion, usa el evento OnDestroy de la Form:



procedure TForm1.FormDestroy(Sender: TObject);
begin
SaveColPos(DBGrid1);
end;

Alexander
27-03-2007, 22:37:03
Realmente es lo que necesitaba, Muchachos muchas gracias.

Alexander