我在我的数据库网格中有一个基于查询字段的列。
问题是,最终用户无法为该字段设置空白值 - 他们只能从查询表中选择值。
我该如何允许最终用户删除或“清空”该列的值?
我在我的数据库网格中有一个基于查询字段的列。
问题是,最终用户无法为该字段设置空白值 - 他们只能从查询表中选择值。
我该如何允许最终用户删除或“清空”该列的值?
procedure TformMain.DBGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
LookupResultField : TField;
begin
if Key = VK_DELETE then
if TDBGrid(Sender).SelectedField.FieldKind = fkLookup then begin // if this field is a lookup field
if not (TDBGrid(Sender).DataSource.DataSet.State in [dsInsert, dsEdit]) then // if the query is not already in edit mode
TDBGrid(Sender).DataSource.DataSet.Edit;
LookupResultField := TDBGrid(Sender).DataSource.DataSet.FieldByName (TDBGrid(Sender).SelectedField.KeyFields);
LookupResultField.Clear; // set the field to NULL
end;
end;
with grid.DataSource.Dataset do begin Edit; FieldByName('fieldname').Clear; Post; end;
可能有更好的方法,但这个可以用。谢谢! - croceldon