私はFireMonkeyを使って書かれたアプリケーションのフォームを持っています。その(モーダル)フォームには、[OK]ボタンがあります。このボタンでは、DefaultプロパティをTrueに設定しています。メモコンポーネントもあります。メモを入力するときにEnterキーを押すと、メモに改行を挿入するのではなく、フォームが閉じられます。デフォルトボタンが付いたフォーム上でのTMemoの改行
私が達成したいのは、メモコンポーネントで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ボタンを含むフォームを持っていますが、メモコンポーネントはありませんが、メモは実行時にその親プロパティを変更することによってそのフォームに移動されます。あなたのメモのOnEnter
でFalse
へ
では 'Memo.Lines.BeginUpdateを試してみてください;'メモ内容と 'Memo.Lines.EndUpdateを変更する前に、'その後。 – Abelisto
EmbaはTMemo WantReturns、WantTabsのプロパティを実装しませんでした:o(Defaultプロパティを設定するために、フォーカスされたTMemoがあるかどうかを確認するためにフォーム上でOnIdleイベントを使用しますが、EmbaもFMXのTApplicationEventを持っていません: OnUpdate少なくとも1つのアクションが定義され、コントロールに割り当てられている場合にアイドル状態で発生したイベント –
デフォルトのボタンOnClickイベントでは、メモがフォーカスされているかどうかをテストし、mrNoneに設定します。 –