Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2011
NicoDominguez NicoDominguez is offline
Registrado
 
Registrado: ago 2008
Posts: 9
Poder: 0
NicoDominguez Va por buen camino
Guardar Formato de Grilla!!

Hola Gente,

Este es mi primer post y necesito un poco de ayuda..

Mi problema es el siguiente, Tengo un Objeto que me encapsula la conexión un con StoredProcedure, un ejemplo seria el siguiente.

Código Delphi [-]
var
  sp     : TStoredProcedure;
begin
  sp:= TStoredProcedure.Create('proc_PRUEBA_NICO');
  sp.Charge_Parameter('cadena','hola');
  sp.Charge_Parameter('numero',5);
  sp.Open;
  DataSource1.DataSet:= sp.storedProcedure;
end;

Donde TStoredProcedure es la clase que se encarga de crear un objeto TMSStoredProc y donde se configura con el procedimiento pasado por parametro.

El problema concreto es darle el formato a la grilla que va a mostrar los datos del StoredProcedure, cuando hago esta asignacion:

Código Delphi [-]
DataSource1.DataSet:= sp.storedProcedure;

el formato de la grilla desaparece... =(

La alternativa mas viable que se me ocurre es darle formato en tiempo de ejecucion a la grilla, pero esto es un proceso muy pesado!!

otra opcion que tengo pero no se como hacerlo es.. darle formato a la grilla en tiempo de diseño y de alguna forma guardar ese formato y aplicarselo despues de asignar el DataSet del DataSource, pero la verdad es q no se como puedo hacer eso...

Saludos y muchas gracias

Última edición por ecfisa fecha: 07-07-2011 a las 16:59:08. Razón: ETIQUETAS [DELPHI] [/DELPHI]
Responder Con Cita
  #2  
Antiguo 07-07-2011
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 20
juanlaplata Va por buen camino
Bueno, no se a que te refieres con el formato de la grilla, ni tampoco que tipo de grilla utilizas.
Este es un ejemplo para el Ancho de las Columnas de un DBGrid.
Le asigna el mayor ancho entre texto del Titulo y el de la 1ra Fila de Datos.
En mi caso, ademas de tengo seteado el ColumnResize = True, con lo cual a 1ra impresion la grilla se ve bien, de ser necesario se pueden ampliar los anchos de columnas.
He leido tambien en este foro, un proceso que recorria la cantidad de registros a mostrar y se quedaba con el maximo ancho, el cual aplicaba.
Codigo del cual modifique hasta quedarme con este que muestro; por que me parecia muy denso el recorrido, etc.

Código Delphi [-]
procedure TFormXX.FormActivate(Sender: TObject);
var i:integer;
begin
for i:= 0 to DBGrid1.Columns.Count-1 do
    begin
    DBGrid1.Columns[i].Title.Alignment:= taCenter;
    DBGrid1.Columns[i].Width :=
          Max((DBGrid1.Canvas.TextWidth(DBGrid1.Columns[i].Field.AsString) +
               20),
              (DBGrid1.Canvas.TextWidth(DBGrid1.Columns[i].Title.Caption) +
               10))
               ;
    end;
end;

PD: Max (num1, num2); {Funcion de la Unit Math}
Responder Con Cita
  #3  
Antiguo 07-07-2011
NicoDominguez NicoDominguez is offline
Registrado
 
Registrado: ago 2008
Posts: 9
Poder: 0
NicoDominguez Va por buen camino
Claro, pero en ese caso le estas dando un formato en tiempo de ejecucion, yo quiero evitar eso.. porque se la cantidad de columnas que me va a retornar el StoredProcedure.

a lo que me referia con darle formato en tiempo de diseño, es a la grilla setearle los titulos, colores, fuentes, etc... antes de compìlar, pero cuando se asigno el dataset en tiempo de ejecucion a la grilla le desaparece el formato...

PD: no especifique la grilla porque desde mi app se usan varias como las CRDBGrid y SMDBGrid
Responder Con Cita
  #4  
Antiguo 07-07-2011
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 20
juanlaplata Va por buen camino
Bueno, prueba entonces, tal como dices. En tiempo de Diseño, al saber cuantas y cuales son las columnas de la grilla, las agregas y editas.
Con Click derecho sobre la grilla, abres el "Columns Editor"
Agregas todas y cada una de las columnas. setas la propiedades, ancho, titulo, etc. y la mas importante sera FieldName, que debera coincidir con el nombre de la columna del QUERY. Alli te quedara diseñada la grilla en tiempo de Diseño, valga la redundancia.
Responder Con Cita
  #5  
Antiguo 07-07-2011
NicoDominguez NicoDominguez is offline
Registrado
 
Registrado: ago 2008
Posts: 9
Poder: 0
NicoDominguez Va por buen camino
Eso es lo q hice.. pero cuando en tiempo de ejecucion asigno el resultado del StoredProcedure el formato de la grilla se va... es mas.. cuando le hago un free al objeto el formato vuelve... el problema esta en la asignacion de dataset del datasource.
lo que yo necesito es de alguna forma:
1ro .- guardar el formato que le di a la grilla en tiempo de diseño ( alguna propiedad o algo.. )
2do .- asignar el dataset (esto hace que la grilla pierda el formato)
3ro .- volver a darle el formato a la grilla que habia guardado anteriormente, pero con los datos ya cargados del paso 2.
Responder Con Cita
  #6  
Antiguo 07-07-2011
NicoDominguez NicoDominguez is offline
Registrado
 
Registrado: ago 2008
Posts: 9
Poder: 0
NicoDominguez Va por buen camino
bueno gente... lo resolvi de esta forma


var
A : Array of TSMDBColumn;
cantidad : integer;
iterator : integer;
color : TColor;
begin


cantidad := SMDBGrid1.Columns.Count;

SetLength(A, cantidad);

For iterator := 0 to cantidad -1 Do
Begin

A[iterator] := TSMDBColumn.Create(nil);
A[iterator].Color := SMDBGrid1.Columns[iterator].color;
A[iterator].Title := SMDBGrid1.Columns[iterator].Title;

End;


//-----------------------------------------


sp := TStoredProcedure.Create('proc_PRUEBA_NICO');

sp.Charge_Parameter( 'cadena','hola');
sp.Charge_Parameter( 'numero',5);

sp.Open;

DataSource1.DataSet := sp.storedProcedure;


//-----------------------------------------

For iterator := 0 to cantidad -1 Do
Begin

SMDBGrid1.Columns[iterator].TextEllipsis := teMiddle;
SMDBGrid1.Columns[iterator].Color := A[iterator].color;
SMDBGrid1.Columns[iterator].Title := A[iterator].Title;

End;

end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como ver un tipo de datos de una grilla en otra grilla en el mismo form? calistian Varios 5 01-10-2008 19:29:04
guardar formato Makiley Varios 6 04-06-2008 21:04:07
Guardar Imagen en formato png gulder Gráficos 10 03-03-2008 11:36:15
Guardar un txt con formato UNIX dayrontbs Varios 14 31-08-2006 20:56:33
Guardar Qreports en formato pdf oliviagadel Impresión 1 16-12-2003 10:38:42


La franja horaria es GMT +2. Ahora son las 01:00:06.


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
Copyright 1996-2007 Club Delphi