我在使用FireMonkey编写的应用程序中有一个表单。在那个(模态)表单上有一个OK按钮,我已将Default属性设置为True。还有一个备忘录组件。现在,如果在输入备忘录时键入enter键,则表单将关闭,而不是在备忘录中插入换行符。
我想要完成的是,当在memo组件中按下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;
这样可行,但现在有一个令人烦恼的延迟,在击中输入后和换行符出现之前。此外,我想解决方案,这将不那么hacky。
我还应该指出,我也有包含OK按钮但不包含备忘录组件的表单,但是备忘录将在运行时通过更改其父属性移动到该表单。
答案 0 :(得分:2)
在备忘录的btnOk.Default
中将False
设为OnEnter
,然后在备忘录的True
中将OnExit
设为<{1}}