DBGridEh1ColEnter(Sender: TObject); var i: integer; begin 添加下列字符串 with DBGridEh1.Columns[DBGridEh1.SelectedIndex] do begin if UpperCase(FieldName) = UpperCase('memberlevel') then begin PickList.Clear; for i := 0 to High(DiscountbyMark) do PickList.Add(DiscountbyMark[i].Level); end; end; 不能写,只能选 DBGridEh1KeyPress(Sender: TObject; var Key: Char); begin inherited; with DBGridEh1 do begin if UpperCase(SelectedField.FieldName) = UpperCase('memberlevel') then Key := #0; end;
To: tanlijun37(天下) 我照您的代码改了,可有些键仍能生效,比如:Shift+方向键. 在内容被全选中的状态下,DELETE键也会生效,于是就可以把格子内容清空.提出这个问题的原因在于,如果用户不从下拉列表中选取,而是手工键入,那么当他把格子里的内容全部清光后离开格子,就会引发一个"无名的错误",这个错误并非该栏位不能接收null值而引起的,因为定义栏位时就允许null. 各位,请赐高招~,万分感谢!
DBGRIDEH没有用过,不知是不是从DBGRID继承过来的?
DBGRID在数据字段里设置一下,就可以在DBGRID里实现下拉选择输入……
var
i: integer;
begin
添加下列字符串
with DBGridEh1.Columns[DBGridEh1.SelectedIndex] do
begin
if UpperCase(FieldName) = UpperCase('memberlevel') then
begin
PickList.Clear;
for i := 0 to High(DiscountbyMark) do
PickList.Add(DiscountbyMark[i].Level);
end;
end;
不能写,只能选
DBGridEh1KeyPress(Sender: TObject;
var Key: Char);
begin
inherited;
with DBGridEh1 do
begin
if UpperCase(SelectedField.FieldName) = UpperCase('memberlevel') then
Key := #0;
end;
我照您的代码改了,可有些键仍能生效,比如:Shift+方向键. 在内容被全选中的状态下,DELETE键也会生效,于是就可以把格子内容清空.提出这个问题的原因在于,如果用户不从下拉列表中选取,而是手工键入,那么当他把格子里的内容全部清光后离开格子,就会引发一个"无名的错误",这个错误并非该栏位不能接收null值而引起的,因为定义栏位时就允许null.
各位,请赐高招~,万分感谢!