在form中放一个DateTimePicker值为不可见 响应dbgrid的ondrawdatacell事件 if (gbfocused in State) then begin DateTimePicker.Left:=rect.left+dbgrid1.left; DateTimePicker.Top:=rect.top+dbgrid1.top; DateTimePicker.width:=rect.Right-dbgrid1.left; DateTimePicker.Height:=rect.bottom-dbgrid1.Top; DateTimePicker.Visible:=True; end; 响应dbgrid的onColExit事件 begin DateTimePicker.Visible:=False; end;
用楼上的方法,或干脆用datetimepicker组件另外输入好了!
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if (key < > chr(9)) then begin if (DBGrid1.SelectedField.FieldName=datetimetostr(DateTimePicker.Data)) then begin DateTimePicker.SetFocus; SendMessage(DateTimePicker.Handle, WM_Char, word(Key), 0); end; end; end;
也可以选择第三方控件,挺好用的
响应dbgrid的ondrawdatacell事件
if (gbfocused in State) then
begin
DateTimePicker.Left:=rect.left+dbgrid1.left;
DateTimePicker.Top:=rect.top+dbgrid1.top;
DateTimePicker.width:=rect.Right-dbgrid1.left;
DateTimePicker.Height:=rect.bottom-dbgrid1.Top;
DateTimePicker.Visible:=True;
end;
响应dbgrid的onColExit事件
begin
DateTimePicker.Visible:=False;
end;
begin
if (key < > chr(9)) then
begin
if (DBGrid1.SelectedField.FieldName=datetimetostr(DateTimePicker.Data)) then
begin
DateTimePicker.SetFocus;
SendMessage(DateTimePicker.Handle, WM_Char, word(Key), 0);
end;
end;
end;