Delphi 如何设置TDBCombobox中的最大字符数?
TBEdit控件具有MaxLength属性,但您不需要对其执行任何操作,因为作为一个数据感知控件,这是自动处理的 TDBCombobox控件没有此类属性,并且不会自动处理最大长度。Delphi 如何设置TDBCombobox中的最大字符数?,delphi,combobox,Delphi,Combobox,TBEdit控件具有MaxLength属性,但您不需要对其执行任何操作,因为作为一个数据感知控件,这是自动处理的 TDBCombobox控件没有此类属性,并且不会自动处理最大长度。 当样式设置为csDropDown时,如何控制TDBCombobox中的最大字符数?理想情况下,这应该基于基础字段的长度 我有一个表单,其中有用户可以选择的“标准”选项,但他们也需要能够输入自由格式的指令,因此我需要使用csDropDown,因此我还注意到TDBComboBox没有公开标准TComboBox的MaxLe
当样式设置为csDropDown时,如何控制TDBCombobox中的最大字符数?理想情况下,这应该基于基础字段的长度 我有一个表单,其中有用户可以选择的“标准”选项,但他们也需要能够输入自由格式的指令,因此我需要使用
csDropDown
,因此我还注意到TDBComboBox
没有公开标准TComboBox
的MaxLength
属性,正如您所注意到的,仅仅使用字段大小是不起作用的
另一个问题是,如果用户键入的内容太多,TDBComboBox
在更新它时,只是默默地将其截断为基础列的大小。在发布数据(截短发生的地方)之前,文本看起来仍然在那里,但是DBComboBox.text
不会更新以反映截短。关闭窗口,然后重新打开,会显示数据丢失
我通过使用一个插入器类来访问其派生的TCustomComboBox
的受保护的MaxLength
属性,从而为TStringField
的大小正确设置最大长度:
type
THackCB = class(TCustomComboBox);
procedure TEditForm.FormShow(Sender: TObject);
begin
THackCB(TheDBComboBx).MaxLength := DataMod.MyStringField.Size;
end;
如果是组合框,您是否对用户可以选择的项目不负责?因此你可以控制它们的长度。我编辑了这个问题,因为我应该声明样式设置为csDropDown(而不是csDropDownList)。基础字段不控制DBCombobox的maxlength。