怎样才能让滚动条随光标在Memo中移动
比如:让光标跳到1000行(从第一行),滚动条也处在适当的位置
急!!
在线等
我爱CSDN
我尊敬大虾

解决方案 »

  1.   

    ShowScrollBar(memo1.Handle,SB_BOTH,false);//去掉水平和垂直
    ShowScrollBar(memo1.Handle, SB_VERT, false) ;//去掉垂直
      

  2.   

    scroolbars为ssVertical;
    wordwrap为true;
    通过上下键移动,滚动条不也一起动了。
      

  3.   

    在开始的时候先得到你的Memo的总行数,然后把这个值给滚动条,然后就可以根据你现在所属的行,去滚动滚动条了
      

  4.   

    写一个继承的Memo
    unit ExMemointerfaceuses
      windows,Messages,Classes,StdCtrls;Type
      TddgExtendedMemo = Class(TMemo)
      private
        FRow:Longint;
        FColumn:Logint;
        FOnHScroll:TNotifyEvent;
        FOnVScroll:TNotifyEvent;
        Procedure WMHScroll(Var Msg:TWMHScroll);message WM_HSCRoll;     
        Procedure WMVScroll(Var Msg:TWMVScroll);message WM_VSCRoll;
        Procedure SetRow(Value:Longint);
        Procedure SetColumn(Value:Longint);
        Function GetRow:Longint;
        Function GetColumn:Longint;
      protected
        procedure HScroll:dynamic;
        procedure VScroll:dynamic;
      public
        property Row:Longint read FRow write FRow;
        property Column:Longing read FColumn write FColumn;
      published
        property OnHScroll:TNotifyEvent read FOnHScroll write FOnHScroll;
        property OnVScroll:TNotifyEvent read FOnVScroll write FOnVScroll;
      end;
    implementation
      procedure TddgExtendedMemo.WMHScroll(Var Msg:TWMHScroll);
        begin
          inherited;
          HScroll;
        end;
      
       procedure TddgExtendedMemo.WMVScroll(Var Msg:TWMVScroll);
        begin
          inherited;
          VScroll;
        end;                      procedure TddgExtendedMemo.HScroll;
         begin
           if Assigned(FOnHScroll) then
              FOnHScroll(self);
         end;   procedure TddgExtendedMemo.VScroll;
         begin
           if Assigned(FOnVScroll) then
              FOnVScroll(self);
         end;   procedure TddgExtendedMemo.SetRow(Value:Longint);
         begin
           SelStart := PerForm(EM_LINEINDEX,Value,0);
           FRow := SelStart; 
         end;   procedure TddgExtendedMemo.GetRow:Longing;
         begin
           Result := Perform(EM_LINEFROMCHAR,-1,0);
         end;   procedure TddgExtendedMemo.SetColumn(Value:Longint);
         begin
           FColumn := Perform(EM_LINELENGTH,Perform(EM_LINEINDEX,GetRow,0),0);
           if FColumn >Value then
              FColumn := Value;
           SelStart := Perform(eM_LINEINDEX,GetRow,0)+FColumn; 
         end;   procedure TddgExtendedMemo.GetColumn:Longint;
         begin
           result := SelStart - Perform(EMLINEINDEX,-1,0); 
         end;
      

  5.   

    请问怎样将这个继承的memo(exmemo)类,注册到delphi的 组件面板中
      

  6.   

    我是这样做的memo1.Perform(WM_VSCROLL,SB_LINEDOWN,0);  每次下滚一行