8

我在使用 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 按钮的表单,但不包含备忘录组件,但是通过更改其父属性,备忘录将在运行时移动到该表单。

4

1 回答 1

2

设置btnOk.DefaultFalse你的备忘录中OnEnter,然后回到True备忘录中OnExit

于 2013-03-17T17:12:07.713 回答