テスト用の新しいFMXプロジェクトを作成しました。 TabControlを追加しました。コンテキストメニューを使用して3つのタブシートを追加しました。 3番目のタブシートに、TEditを追加しました。 OnChangeEventハンドラをtabcontrolに追加しました。Delphi FMXがフォーカスを特定のコントロールに設定してカーソルが表示されるようにしました。
procedure TForm1.TabControl1Change(Sender: TObject);
begin
if TabControl1.ActiveTab = TabItem3 then
begin
self.ActiveControl := Edit1;
self.Focused := Edit1;
Edit1.SetFocus;
end;
end;
これまでのVCLの経験から、さまざまな組み合わせを試しました。入力/カーソルのフォーカスはEdit1のコードに変更されません。もちろん、Win32で実行時にedit1をクリックすると、フォーカス矩形(スタイルを使用しています)にカーソルが表示されるようになりました。 (期待通り)Androidで。 VKは私が焦点を自分自身に移すときにのみ出現する。
これをプログラムで実行する方法はありますか?ユーザーは入力を開始できるだけですか? (フォーカスをTEdit自身にシフトさせる必要はありません)。
この「OnTabControl1Change」イベントでは、おそらくフォーカスを変更できません。フラグを設定し、このフラグをタイマーでチェックするか、フォームに遅延メッセージを送信します。 –
興味深い答え! OnCanFocusイベントハンドラをTEditに置き、呼び出されました。カーソル(とVK)が表示されないことだけです。私がタイマーを使うつもりなら、私は匿名のスレッドを使うかもしれません... – nolaspeaker
はい、私はちょうどあなたのために匿名のスレッドを書いていました!さて、あなたはそれを得て以来、将来の読者が見るためにあなたの質問に答えてください。 –