我在使用FireMonkey编写的应用程序中有一个表单。在这个模态表单中,有一个默认设置为True的OK按钮。还有一个备忘录组件。现在,在备忘录中输入时按下回车键,表单会关闭而不是在备忘录中插入换行符。
我想要实现的是,在备忘录组件中按下Enter(或Shift + Enter或类似的内容)时,插入换行符。在其他组件中,您不能输入换行符,但我仍希望按Enter键可以关闭表单。到目前为止,我找到的最好的解决方法是将以下代码添加到表单的OnCloseQuery操作中:
我想要实现的是,在备忘录组件中按下Enter(或Shift + Enter或类似的内容)时,插入换行符。在其他组件中,您不能输入换行符,但我仍希望按Enter键可以关闭表单。到目前为止,我找到的最好的解决方法是将以下代码添加到表单的OnCloseQuery操作中:
if (Focused.GetObject.ClassName = 'TMemo') and (ModalResult = mrOk) then
begin
CanClose := False;
Memo := TMemo(Focused.GetObject);
Memo.InsertAfter(Memo.CaretPosition, sLineBreak, [TInsertOption.ioMoveCaret,
TInsertOption.ioCanUndo]);
end
else
CanClose := True;
这个方法可以实现,但是按下回车键和换行出现之间有一个小小的烦人延迟。另外我希望有一个更好的解决方案,不要使用hacky的方法。
我还应该指出,我也有包含“确认”按钮但不包含备忘录组件的表单,但是在运行时会通过更改其父属性将备忘录移动到该表单中。
Memo.Lines.BeginUpdate;
,并在更改完成后使用Memo.Lines.EndUpdate;
。 - AbelistoOnClick
事件中,测试备忘录是否具有焦点,如果是这种情况,则将ModalResult
设置为mrNone
。 - LU RD