Hola, ¿Hay alguna forma de poner un DateTimePicker en una celda de un dbgrid?, ¿se puede?.
Fleon xD

Como poner un DateTimePicker en un dbgrid?
Started by
Fleon
, Nov 05 2008 08:57 AM
5 replies to this topic
#1
Posted 05 November 2008 - 08:57 AM
#2
Posted 05 November 2008 - 09:09 AM
SI SE PUEDE,
espero te sirva
delphi
procedure TfrTickets.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin //Agrega el datetimepicker dtFecha.Visible := DBGrid1.SelectedField = 'FECHA'; if dtFecha.Visible then if gdFocused in State then begin dtFecha.SetBounds(Rect.Left,Rect.Top, Rect.Right-Rect.Left, Rect.Bottom-Rect.Top); end; end;
espero te sirva
#3
Posted 08 November 2008 - 07:12 AM
Hola eduarcol, perdona la tardanza, estaba probando tu código y me da un error en la línea 4 del código, este es el error:
¿que podria ser?.
Fleon xD
[Error] Unit1.pas(36): Incompatible types: 'String' and 'TField'
¿que podria ser?.
Fleon xD
#4
Posted 08 November 2008 - 07:26 AM
Hola, prueba lo siguiente:
Saludos.
delphi
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (gdFocused in State) then begin if (Column.Field.FieldName = 'FECHA') then with dtFecha do begin Left := Rect.Left + DBGrid1.Left + 1; Top := Rect.Top + DBGrid1.Top + 1; Width := Rect.Right - Rect.Left + 2; Width := Rect.Right - Rect.Left + 2; Height := Rect.Bottom - Rect.Top + 2; dtFecha.Date := Column.Field.AsDateTime; Visible := True; end; end end;
Saludos.
#5
Posted 08 November 2008 - 07:27 AM
que lo coloque de memoria, te esta diciendo que le estas asignando un string a un TField, deberiamos igualarlos.
delphi
DBGrid1.SelectedField.FieldName = 'FECHA'
#6
Posted 08 November 2008 - 07:28 AM
no lo he probado, pero la diferencia con la respuesta de enecumene es que el datetimepicker siempre va a estar dibujado, mientras que lo que te propongo es que se dibuje solo cuando se entra al campo de fecha.