给dbgrid增加日期下拉列表

lazarus的dbgrid比delphi对应组件功能更先进,怎样让dbgrid像dbgrideh一样自动识别日期型字段呢?

在窗口放一个dbgrid、VirtualTable、dbdatetimepicker,将dbdatetimepicker设置visible:=false;

procedure TForm1.DBGrid1SelectEditor(Sender: TObject; Column: TColumn;
var Editor: TWinControl);
begin
if (DBGrid1.SelectedField.DataType=ftDateTime) or
  (DBGrid1.SelectedField.DataType=ftDate)
then begin
  DBDateTimePicker1.DataSource:=DBGrid1.DataSource;
  DBDateTimePicker1.DataField:=DBGrid1.SelectedField.fieldname;
  DBDateTimePicker1.boundsRect:=DBGrid1.SelectedFieldRect;
  Editor:=DBDateTimePicker1;
  DBDateTimePicker1.Visible:=True;
end;
end;

//为内存表添加字段

procedure TForm1.FormCreate(Sender: TObject);

begin

  VTabTemp.FieldDefs.Clear;
  with VTabTemp.FieldDefs do Begin
  Add('depart',ftstring,40);
  Add('limitdate',ftdate);
end;
VTabTemp.Open;
DBGridEh1.Columns[0].TextEditing:=False;

end;

 

procedure TForm1.Button1Click(Sender: TObject);
begin
  VTabTemp.Delete;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  VTabTemp.append;
  VTabTemp.FieldByName('depart').AsString:='测试一';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  VTabTemp.Edit;
  VTabTemp.post;
end;

posted @ 2023-08-23 08:47  仙侣步惊云  阅读(192)  评论(0)    收藏  举报