Delphi 如何将光标移动到插入的末尾?使用ActiveDocument.Range.InsertAfter()后

Delphi 如何将光标移动到插入的末尾?使用ActiveDocument.Range.InsertAfter()后,delphi,ms-word,Delphi,Ms Word,我正在使用WordApp.ActiveDocument.Range.InsertAfter()插入word文档。但是,完成此操作后,光标位于插入的前面位置。我试过在之后插入和在之前插入吗?我试着复制到剪贴板,只是粘贴,但使用它会在粘贴中添加一个#13,我不想这样。我只是想让word的用户能够点击Fkey并在该点自动粘贴一些格式化文本,然后在该点继续键入。。。有什么理想吗? 我使用的是Delphi4 Pro 谢谢Roy是的,您需要将插入点移动到范围之后。执行InsertAfter时,范围会自动重新

我正在使用WordApp.ActiveDocument.Range.InsertAfter()插入word文档。但是,完成此操作后,光标位于插入的前面位置。我试过在之后插入和在之前插入吗?我试着复制到剪贴板,只是粘贴,但使用它会在粘贴中添加一个#13,我不想这样。我只是想让word的用户能够点击Fkey并在该点自动粘贴一些格式化文本,然后在该点继续键入。。。有什么理想吗? 我使用的是Delphi4 Pro


谢谢Roy

是的,您需要将插入点移动到范围之后。执行InsertAfter时,范围会自动重新调整大小-您只需移动到末尾,然后选择移动到的位置。以下是一些VBA代码,可以帮助您入门:

Sub DoInsertAfter()
    Dim r As Range
    Set r = ActiveDocument.Range
    r.InsertAfter "something difficult to say in Arabic"
    r.Move Unit:=wdStory
    r.Select
End Sub

是的,您需要将插入点移动到范围之后。执行InsertAfter时,范围会自动重新调整大小-您只需移动到末尾,然后选择移动到的位置。以下是一些VBA代码,可以帮助您入门:

Sub DoInsertAfter()
    Dim r As Range
    Set r = ActiveDocument.Range
    r.InsertAfter "something difficult to say in Arabic"
    r.Move Unit:=wdStory
    r.Select
End Sub

@罗伊:下面的答案回答了你的问题吗?如果没有,让我们继续努力。谢谢御宅族,我直到今天早上才尝试,但我仍然有点小麻烦。我使用delphi,到目前为止还没有正确的格式来完成这项工作。单位:=WdStory的值是多少?在Delphi中,我需要设置正确的变量。我注意到这个方法消除了粘贴文本的格式设置?我在richtext编辑字段中设置了复制的数据,这样我可以将其中的一些设置为粗体和差异字体,但当我插入时,格式就消失了。我尝试了Win消息,但找不到我的文档。芬德温道(PChar('OpusApp'),无);?有什么想法吗?再次感谢。RoySorry,在Delphi中,您只需编写
6
,而不是
wdStory
。但是,由于您希望保留格式,
.InsertAfter
不是您所需要的,我将更新下面的代码以粘贴
@Roy:下面的答案是否回答了您的问题?如果没有,让我们继续努力。谢谢御宅族,我直到今天早上才尝试,但我仍然有点小麻烦。我使用delphi,到目前为止还没有正确的格式来完成这项工作。单位:=WdStory的值是多少?在Delphi中,我需要设置正确的变量。我注意到这个方法消除了粘贴文本的格式设置?我在richtext编辑字段中设置了复制的数据,这样我可以将其中的一些设置为粗体和差异字体,但当我插入时,格式就消失了。我尝试了Win消息,但找不到我的文档。芬德温道(PChar('OpusApp'),无);?有什么想法吗?再次感谢。RoySorry,在Delphi中,您只需编写
6
,而不是
wdStory
。但是,由于您希望保留格式,
.InsertAfter
不是您所需要的,我将更新下面的代码,以便粘贴
。您好,御宅族,您对此有什么想法吗?我曾尝试粘贴自己,但出于什么原因,我无法使用findwindow找到窗口?我还使用了:{查找应用程序的主窗口}//g:=FindWindow(PChar('OpusApp'),nil);//g:=FindWindow('OpusApp',nil);{查找应用程序文本框的窗口}//d:=ChildWindowFromPoint(g,point(50,50));{现在发送一个字符!!}//SendMessage(g,WM_CHAR,Ord('a'),0);它会找到写字板窗口,但不会找到MS Office Word窗口?有什么想法吗?谢谢Roy。我忘了我可以使用粘贴命令,但不能使用sendmessage。与insertafter类似,但当我粘贴时,它会去除最后一个空白,这就是我将字体返回到“非粗体”的方式。粘贴的文本是粗体和差异字体。如果用户继续键入,是否保留此格式?所以我在粘贴的文本中添加了更改,但在粘贴之前它会将其删除???你好,御宅族,你能想出一些关于这个的建议吗?我曾尝试粘贴自己,但出于什么原因,我无法使用findwindow找到窗口?我还使用了:{查找应用程序的主窗口}//g:=FindWindow(PChar('OpusApp'),nil);//g:=FindWindow('OpusApp',nil);{查找应用程序文本框的窗口}//d:=ChildWindowFromPoint(g,point(50,50));{现在发送一个字符!!}//SendMessage(g,WM_CHAR,Ord('a'),0);它会找到写字板窗口,但不会找到MS Office Word窗口?有什么想法吗?谢谢Roy。我忘了我可以使用粘贴命令,但不能使用sendmessage。与insertafter类似,但当我粘贴时,它会去除最后一个空白,这就是我将字体返回到“非粗体”的方式。粘贴的文本是粗体和差异字体。如果用户继续键入,是否保留此格式?所以我在粘贴的文本中添加了更改,但在粘贴之前会将其删除???