我在类型为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;
任何帮助都会很棒!
答案 0 :(得分:0)
假设这是一个标准的TEdit控件......
Key
OnKeyDown
参数来捕捉单个击键
只是一些小技巧,不确定它是否会有所帮助,因为你没有说你正在使用TEdit