delphi – 使用“默认”按钮在表单上的TMemo中换行

前端之家收集整理的这篇文章主要介绍了delphi – 使用“默认”按钮在表单上的TMemo中换行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用FireMonkey编写的应用程序中有一个表单.在那个(模态)表单上有一个OK按钮,我已将Default属性设置为True.还有一个备忘录组件.现在,如果在输入备忘录时键入enter键,则表单将关闭,而不是在备忘录中插入换行符.

我想要完成的是,当在memo组件中按下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按钮但不包含备忘录组件的表单,但是备忘录将在运行时通过更改其父属性移动到该表单.

解决方法

在备忘录的OnEnter中将btnOk.Default设置为False,并在备忘录的OnExit中将其设置为True

猜你在找的Delphi相关文章