如何在TDBCombobox中设置最大字符数?

时间:2014-07-16 09:52:59

标签: delphi combobox

TBEdit控件具有MaxLength属性,但您不需要对其执行任何操作,因为作为数据感知控件,这是自动处理的。

TDBCombobox控件没有此类属性,并且不会自动处理最大长度。 当Style设置为csDropDown时,应如何控制TDBCombobox中的最大字符数?理想情况下,这应该基于底层字段的长度。

1 个答案:

答案 0 :(得分:1)

我的表格中有"标准"用户可以选择的选项,但他们也需要能够输入自由格式的说明,因此我需要使用csDropDown,所以我也注意到TDBComboBox没有' t暴露标准MaxLength所做的TComboBox属性,并且它只是使用字段大小,因为您已经注意到了。

另一个问题是,如果用户输入的内容太多,TDBComboBox只是在更新时会默默地将其截断为基础列的大小。在发布数据(发生截断的地方)之前,文本仍然看起来一直都在那里,但DBComboBox.Text未更新以反映截断。关闭窗口然后重新打开它会显示数据丢失。

我通过使用插入器类来访问它所从的MaxLength的受保护TCustomComboBox属性来解决这个问题,以便为TStringField的大小正确设置最大长度:

type
  THackCB = class(TCustomComboBox);

procedure TEditForm.FormShow(Sender: TObject);
begin
  THackCB(TheDBComboBx).MaxLength := DataMod.MyStringField.Size;
end;