我在使用 FireMonkey 编写的应用程序中有一个表单。在该(模态)表单上有一个确定按钮,我已将其默认属性设置为 True。还有一个备忘录组件。现在,如果在输入备忘录时按回车键,则表单将关闭,而不是在备忘录中插入换行符。
我想要完成的是,当在备忘录组件中按下 enter (或 shift+enter 或类似的 smth )时,输入换行符。在无法键入换行符的其他组件中,我仍然希望按 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;
这行得通,但是现在在按回车键之后和出现换行符之前会有一点烦人的延迟。我也想要解决方案,那样会不那么老套。
我还应该指出,我也有包含 OK 按钮的表单,但不包含备忘录组件,但是通过更改其父属性,备忘录将在运行时移动到该表单。