DBGrid中插入DateTimePicker
procedure TForm13.DateTimePicker1Change(Sender: TObject); //写回 日期
begin
DBGrid1.DataSource.Edit;
DBGrid1.Columns[2].Field.Value := DateTimePicker1.DateTime; //2 为 'DateAdded'所在的列序号
fdquery1.Post;
end;
procedure TForm13.DateTimePicker1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = Chr(13)) then begin //手动 在 DateTimePicker1输入日期数字后,按回车 保存到 数据库
DateTimePicker1.Visible:= false;
DBGrid1.DataSource.Edit;
DBGrid1.Columns[2].Field.Value := DateTimePicker1.DateTime;
fdquery1.Post;
end;
end;
procedure TForm13.DBGrid1ColExit(Sender: TObject);// 退出 时,不显示 编辑 控件
begin
if DBGrid1.SelectedField.FieldName = 'password' then DateTimePicker1.Visible := False;
end;
procedure TForm13.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (gdFocused in State) then
begin
if (Column.Field.FieldName = 'password') then
with DateTimePicker1 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;
DateTimePicker1.Date:= Column.Field.Value;// 数据库 传给 DateTimePicker1
Visible := True;
end;
end
end;
procedure TForm13.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = Chr(9)) then Exit; //TAB键 直接 退出
if (DBGrid1.SelectedField.FieldName = 'password') then begin
DateTimePicker1.SetFocus;
SendMessage(DateTimePicker1.Handle, WM_Char, word(Key), 0);
end
end;
procedure TForm13.FormCreate(Sender: TObject);
begin
FormatSettings.DateSeparator := '-';
FormatSettings.TimeSeparator := ':';
FormatSettings.ShortDateFormat := 'yyyy-MM-dd';
FormatSettings.LongDateFormat := 'yyyy-MM-dd';
FormatSettings.TimeAMString := '';
FormatSettings.TimePMString := '';
FormatSettings.ShortTimeFormat := 'hh:nn:ss';
FormatSettings.LongTimeFormat := 'hh:nn:ss:zzz';
end;