Necesitaría usar un control tdateedit en la celda de un dbgrid donde haya una fecha, así prevengo fechas erróneas.. (y además visualmente le gusta más al usuario)
Estuve leyendo esto de cambiar el editor de celdas (También he sacado algo de información en foros de delphi.)
Se supone que en el evento SelectEditor del dbgrid se establece el editor de celdas.
Lo que hice fue poner por ejemplo un control dateedit por ahí en el form, lo hice invisible y lo asigné:
delphi
procedure TListaObras.dbgAmpliacionesSelectEditor(Sender: TObject; Column: TColumn; var Editor: TWinControl); begin if (column.Index=2) then begin //en esa col hay una fecha Editor := DateEdit1; end; end;
Todo muy lindo, pero el dateedit queda en cq lado y no en la celda!..
Probé esto otro: (o sea cambio las coordenadas y le asigno el valor del campo correspondiente de la consulta)
delphi
if (column.Index=2) then begin DateEdit1.BoundsRect := dbgAmpliaciones.CellRect(Column.Index + 1, dbgAmpliaciones.SelectedIndex); DateEdit1.Date:= qryAmpliaciones.FieldByName('fecha').AsDateTime; Editor := DateEdit1; endif
pero a veces queda en la fila correcta y a veces no.
Alguien ha hecho algo de esto que me pueda orientar?
Muchas gracias