我希望迭代包含凭证图像的pdf文件夹。我正在查看TAcroPDF组件中的每个文件。用途可以查看凭证上写的金额,并可以将此金额输入文本框。按ENTER键时,将显示下一个凭证,我希望自动重新聚焦在textBox上。由于某种原因,即使ActiveControl是edtAmount,Form也没有将焦点传递给TEdit组件。
我在ShowImage函数之后尝试了edtAmout.SerFocus。我试过PostMessage和edtAnount.Perform。我有一个带有此代码的OnIdle Handler
if not edtAmount.Focused then
PostMessage(Handle, um_AmountFocus,0,0);
正在处理所有的编辑。我所缺少的是为什么TAcroPDF似乎占据了焦点。
我可以手动双击进入TEdit,但我需要一个用户密集程度较低的解决方案
答案 0 :(得分:2)
抱歉延迟回复。我发现有一件事是使用TTimer;在调用LoadFile后启用Timer,并在Timer事件中将焦点设置为edtAmount。在我的情况下,定时器延迟500毫秒似乎有效。在SetFocus调用后禁用计时器。
答案 1 :(得分:0)
使用LoadFile方法导致焦点问题
AcroPDF1.LoadFile(PDFFileName); //was the source of the focusing problem
使用
AcroPDF1.src:=PDFFileName;
代替。