怎么让两个TRichEdit同时滚动?

解决方案 »

  1.   

    子类化RichEdit,截获WM_VSCROLL消息,并向另一个RichEdit发送WM_VSCROLL
      

  2.   

    继承RichEdit,截获WM_VSCROLL或WM_HSCROLL消息,加一个OnVScroll和OnHScroll事件,然后在这个控件的这两件事件中调整另一个RichEdit的滚动条
    可以参考下面的代码,以下是我继承TScrollBox控件,是为了让这个ScrollBox滚动条动的时候另一个也动,下面的代码只是截获滚动消息定义了滚动事件
    unit U_PicScrollBox;interfaceuses Classes, Forms, Controls, Messages,Windows, cxImage;type
      TPicScrollBox = class(TScrollBox)
      private
        FcxImage: TcxImage;
        FOnVScroll:TNotifyEvent;
        FOnHScroll:TNotifyEvent;
      protected
        procedure WMVScroll(var Message:TWMScroll);message WM_VSCROLL;
        procedure WMHScroll(var Message:TWMScroll);message WM_HSCROLL;
      published
        property cxImage:TcxImage read FcxImage write FcxImage;
        property OnVScroll:TNotifyEvent read FOnVScroll write FOnVScroll;
        property OnHScroll:TNotifyEvent read FOnHScroll write FOnHScroll;
      public
        constructor Create(AOwner: TComponent);override;
      end;implementation{ TPicScrollBox }constructor TPicScrollBox.Create(AOwner: TComponent);
    begin
      inherited;
      cxImage:=TcxImage.Create(Self);
      cxImage.Parent:=Self;
      cxImage.AutoSize:=True;
      cxImage.Properties.PopupMenuLayout.MenuItems:=[];
      cxImage.Enabled:=False;
    end;procedure TPicScrollBox.WMHScroll(var Message: TWMScroll);
    begin
      inherited;
      if Assigned(FOnHScroll) then FOnHScroll(Self);
    end;procedure TPicScrollBox.WMVScroll(var Message: TWMScroll);
    begin
      inherited;
      if Assigned(FOnVScroll) then FOnVScroll(Self);
    end;end.