给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;
浙公网安备 33010602011771号