如何滚动到用户在finddialog框中输入的“找到”单词

时间:2016-04-04 00:36:16

标签: delphi trichedit

我在delphi表单上有一个包含finddialog框的丰富编辑。用户输入要找到的单词,程序正确地突出显示“找到的”单词 - 这很好用。然而,我想要的是程序滚动,以便找到的单词的第一个出现在richedit框的第一行。如果用户然后单击“下一步”(查找对话框),则滚动继续,以便下一次出现的单词出现在第一行,依此类推。任何人都可以帮助我吗?

master

1 个答案:

答案 0 :(得分:4)

您可以使用以下代码滚动到TRichEdit控件中的光标位置:

RichEdit1.SelStart := PreviousFoundPos - 1;
RichEdit1.SelLength := Length(FindDialog1.FindText);
RichEdit1.SetFocus;   

// Now scroll to the current cursor position 
RichEdit1.Perform(EM_SCROLLCARET, 0, 0);

这将Windows消息EM_SCROLLCARET发送到控件,使控件滚动到当前光标位置。