Ver la Versión Completa : Formato Fecha en DbGrid
IceJamp
23-09-2004, 18:22:45
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.
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
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.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.