如何在编辑控件中停止用户突出显示和删除文本?

时间:2011-12-06 17:21:59

标签: delphi devexpress delphi-7 ribbon

我在类型为TcxBarEditItem的DevExpress功能区上有一个编辑控件,我正在录制更新“浮动”列表框的按键,以便触发可能的功能。

出于某种原因,TcxBarEditItem和它的父类的事件处理程序根本不像Delphi的vanilla等效,这意味着我必须记录这些按键。

我的问题是,如何记录/或禁止用户做一些事情,如粘贴大量文本,或突​​出显示和删除大量文本?

这些控件似乎工作的方式意味着使用String(TcxBarEditItem(control).EditValue)(这是我将如何访问控件,因为它是Command类的成员 - TS8RibbonCommand)实际上并不表示编辑控件中的文本,直到用户单击它。我已经尝试过做大量的事情,例如以编程方式将焦点设置在其他地方并重新聚焦,但似乎没有其他工作条记录按键。

在代码段mirroredJumpStart中,我是用户输入内容的副本。 RefreshJumpStart函数采用字符串值并迭代列表中的所有不同字符串值,并使用AnsiContainsString填充列表框。

procedure TS8RibbonJumpStartEdit.KeyPress(Sender: TObject; var Key: Char);
 begin
  if (Key in ['a'..'z']) or (Key in ['A'..'Z']) or (Key in ['0'..'9']) or (Key = ' ') then
   manager.mirroredJumpStart := manager.mirroredJumpStart + Key
  else if (Key = Chr(VK_BACK)) and (Length(manager.mirroredJumpStart) <> 0) then
   Delete(manager.mirroredJumpStart, Length(manager.mirroredJumpStart), 1);
  manager.RefreshJumpStart(manager.mirroredJumpStart);
 end;

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

假设这是一个标准的TEdit控件......

  • 您可以使用MaxLength属性
  • 限制文本量
  • 您可以通过在事件Key
  • 中观察OnKeyDown参数来捕捉单个击键

只是一些小技巧,不确定它是否会有所帮助,因为你没有说你正在使用TEdit