Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何设置TDBCombobox中的最大字符数?_Delphi_Combobox - Fatal编程技术网

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

Delphi 如何设置TDBCombobox中的最大字符数?,delphi,combobox,Delphi,Combobox,TBEdit控件具有MaxLength属性,但您不需要对其执行任何操作,因为作为一个数据感知控件,这是自动处理的 TDBCombobox控件没有此类属性,并且不会自动处理最大长度。 当样式设置为csDropDown时,如何控制TDBCombobox中的最大字符数?理想情况下,这应该基于基础字段的长度 我有一个表单,其中有用户可以选择的“标准”选项,但他们也需要能够输入自由格式的指令,因此我需要使用csDropDown,因此我还注意到TDBComboBox没有公开标准TComboBox的MaxLe

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

TDBCombobox控件没有此类属性,并且不会自动处理最大长度。
当样式设置为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。