Ir al contenido


Foto

Como poner un DateTimePicker en un dbgrid?


  • Por favor identifícate para responder
5 respuestas en este tema

#1 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 05 noviembre 2008 - 08:57

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

Fleon xD
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 05 noviembre 2008 - 09:09

SI SE PUEDE,



delphi
  1. procedure TfrTickets.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  2.   DataCol: Integer; Column: TColumn; State: TGridDrawState);
  3. begin
  4.   //Agrega el datetimepicker
  5.   dtFecha.Visible := DBGrid1.SelectedField = 'FECHA';
  6.   if dtFecha.Visible then
  7.       if gdFocused in State then
  8.       begin
  9.         dtFecha.SetBounds(Rect.Left,Rect.Top, Rect.Right-Rect.Left, Rect.Bottom-Rect.Top);
  10.       end;
  11. end;




espero te sirva

  • 0

#3 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 08 noviembre 2008 - 07:12

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:

[Error] Unit1.pas(36): Incompatible types: 'String' and 'TField'


¿que podria ser?.

Fleon xD
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 08 noviembre 2008 - 07:26

Hola, prueba lo siguiente:



delphi
  1. procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  2.   DataCol: Integer; Column: TColumn; State: TGridDrawState);
  3. begin
  4. if (gdFocused in State) then
  5.   begin
  6.     if (Column.Field.FieldName = 'FECHA') then
  7.     with dtFecha do
  8.     begin
  9.       Left := Rect.Left + DBGrid1.Left + 1;
  10.       Top := Rect.Top + DBGrid1.Top + 1;
  11.       Width := Rect.Right - Rect.Left + 2;
  12.       Width := Rect.Right - Rect.Left + 2;
  13.       Height := Rect.Bottom - Rect.Top + 2;
  14.       dtFecha.Date := Column.Field.AsDateTime;
  15.       Visible := True;
  16.     end;
  17.   end
  18.  
  19. end;



Saludos.
  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 noviembre 2008 - 07:27

que lo coloque de memoria, te esta diciendo que le estas asignando un string a un TField, deberiamos igualarlos.



delphi
  1. DBGrid1.SelectedField.FieldName = 'FECHA'


  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 noviembre 2008 - 07:28

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.
  • 0