怎样在有上下滚动栏的情况下将memo里面的光标和页面置顶? 例如memo读入一篇很长的文章,默认是显示最后的,怎样让光标跑回第一行,并把滚动栏也返回最顶?
解决方案 »
- dbgrideh通过Tclientdataset连接tdatasetprovider,不能排序
- 在李维的<delphi 5.x ado 高级程序设计篇>中使用到:TOleContainer组件,我为什么找不到啊??我用的是DELHPI7.
- 在delphi环境如何做html文件?还有。。。
- 祝大家节日快乐!
- 找到kbmMW了,哈哈。放100分。
- Delphi中的这个类型语句,在VC中如何同等的表示?谢谢
- 大家好,我是新来小妹,我刚接触这些编程,根本就不懂,可老师出了要考试的,这两天就要答案呢,希望大家给我一个正确的答案,谢谢大家!
- 我用addfontresource这个函数为什么有时不管用。请问有没有别的函数能装载字体,谢谢
- 请问高手,如何按照字段名从DataSet中取数据?我只会DataSet.Fields[0].asstring,太不方便了
- 如何专心学delphi
- Indyftp 怎样判断远程服务器是否存在某文件?
- VB的Encrypt和Decrypt,谁帮忙翻译下
vScrollInfo: TScrollInfo;
i:HWND;
begin
FOldWinProc(Msg); // 选择原来的处理
// 判断是否滚动消息
if Msg.Msg=WM_VSCROLL then
begin
// 进行你的动作,如:ListBox.Perform( Msg.Msg, Msg.WParam, Msg.LParam );
i:=GetFocus();
if i=RichEdit1.Handle then
Begin
vScrollInfo.cbSize := SizeOf(vScrollInfo);
vScrollInfo.fMask := SIF_POS;
GetScrollInfo(RichEdit1.Handle, SB_VERT, vScrollInfo);
RichEdit2.Perform(WM_VSCROLL,
MakeLong(SB_THUMBPOSITION, vScrollInfo.nPos + 1), 0);
end else if i= RichEdit2.Handle then
Begin
vScrollInfo.cbSize := SizeOf(vScrollInfo);
vScrollInfo.fMask := SIF_POS;
GetScrollInfo(RichEdit2.Handle, SB_VERT, vScrollInfo);
RichEdit1.Perform(WM_VSCROLL,
MakeLong(SB_THUMBPOSITION, vScrollInfo.nPos + 1), 0);
end; end;end;参考一下,里面通过GetScrollInfo得到滚动信息,Perform发送消息来使滚动条滚动.
var
ScrollLn :integer;
memo.SelStart := memo.Perform(EM_LINEINDEX, memo.Lines.Count, 1);
ScrollLn := memo.Lines.Count - memo.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);
memo.Perform(EM_LINESCROLL, 0, ScrollLn); SendMessage(memo.Handle,EM_SCROLL,SB_LINEup,0);
SendMessage(memo.Handle,EM_SCROLL,SB_LINEdown,0);
//反正就这几句反来复去试一下吧
//我写程序的时候跟你要求是相反的,是如何把光标置为最后,写聊天程序时,msg窗口的richedit 在接到信息时,总是不会自动停到最后一行,滚动条有些问题,写了上面几句就好了,好像是先把光标置顶,再置回最后的处理方法。 我想你要的应该是前面一半就够了
Memo1.SelStart:=0;
Memo1.SelLength:=0;