Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Formato Fecha en DbGrid (https://www.clubdelphi.com/foros/showthread.php?t=14549)

IceJamp 23-09-2004 18:22:45

Formato Fecha en DbGrid
 
Saludos. ¿ Podría alguien indicarme como hacer para que la introducción de fechas en un DbGrid se realizara igual que en un control específico para fechas ( p.e. DbDateTimePicker ) ?

Gracias

marcoszorrilla 23-09-2004 19:14:08

Puedes incrustar un DateTimePicker encima de la rejilla con la propiedad visible a falso y luego con este código que pongo de ejemplo ir mostrándolo y modificando la fecha sin ningún problema.
Código Delphi [-]
 
 procedure TForm1.DBGrid1ColEnter(Sender: TObject);
 begin
   if DbGrid1.Columns [DbGrid1.SelectedIndex].
   Field = Table1Saledate   then
   DateTimePicker1.Visible := True
   else
   DateTimePicker1.Visible := False;
 end;
 
 procedure TForm1.DateTimePicker1Change(Sender: TObject);
 begin
 Table1.Edit;
 Table1Saledate.Value:=Trunc(DateTimePicker1.Date);
 end;
 
 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
   DataCol: Integer; Column: TColumn; State: TGridDrawState);
 begin
   if (gdFocused in State) and
     (Column.Field = Table1Saledate) then
   begin
     DateTimePicker1.SetBounds (
       Rect.Left + DBGrid1.Left + 1,
       Rect.Top + DBGrid1.Top + 1,
       Rect.Right - Rect.Left,
       Rect.Bottom - Rect.Top);
 
   DateTimePicker1.Date:=Trunc(Table1Saledate.Value);
   end;
 end;

Un Saludo.

IceJamp 23-09-2004 19:52:02

Funciona
 
Gracias. Investigando en otro foro ví la solución que me propones y funciona. Hay que hacerle un para de retoques para que no se note que es un control encima de otro pero funciona. Gracias.

marcoszorrilla 23-09-2004 20:05:22

Se puede saber que retoques le has hecho?

Un Saludo.

IceJamp 28-09-2004 13:22:42

He quitado el evento OnChange del DateTimePicker y lo he sustituido por:

En el evento OnEnter del DateTimePicker:

procedure TFrmMoviBanc.FechaGridEnter(Sender: TObject);
begin
FechaGrid.Date := TablaMov.FieldByName('FECOPE').AsDateTime;
end;

para que al activarse el DateTimePicker éste aparezca con la fecha que hay en la base de datos en el campo que estamos editando

En el evento OnExit del DateTimePicker:

procedure TFrmMoviBanc.FechaGridExit(Sender: TObject);
begin
dbGridDatos.SelectedIndex := 2;
if TablaMov.State in [ dsInsert, dsEdit ] then
TablaMov.FieldByName('FECOPE').AsDateTime := FechaGrid.Date;
end;

activo la siguiente columna del dbgrid y si estoy editando o insertando, actualizo en la base de datos el valor del DateTimePicker.

Espero que sirva.


La franja horaria es GMT +2. Ahora son las 19:01:25.

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