Einzelnen Beitrag anzeigen

Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Zwei Memofelder gleichzeitig scrollen

  Alt 19. Mär 2010, 18:33
Hallo Panthrax, so klappt das natürlich noch besser danke.
Ich habe mal die Scrollbar des Partner Memos rausgeholt und die MouseWheel Prozedur hinzugefügt, welche auch auf das Mausrad reagieren zu scheint, wenn nur die Scrollbar des TMyMemo vorhanden ist. Allerdings weiß ich nicht wie ich jetzt dem Partner Memo mitteilen kann, dass es das selbe macht wie das Hauptmemo. So wie ich es gemacht habe klappt es jedenfalls nicht, man sieht aber, dass das andere Memo reagiert.
Hier mal der erweiterte Quelltext:

Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TMyMemo = class(TMemo)
    private
    FPartner: TWinControl;
    public
    property Partner: TWinControl read FPartner write FPartner;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
    procedure MouseWheelHandler(var Message: TMessage); reintroduce; message WM_MouseWheel;
  end;


  TForm3 = class(TForm)
    Memo1: TMemo;
    StaticText1: TStaticText;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

{ TMyMemo }


procedure TMyMemo.WMVScroll(var Message: TWMVScroll);
begin
  inherited;
  if Assigned(FPartner) then
    FPartner.Dispatch(Message);
end;

procedure TMyMemo.MouseWheelHandler(var Message: TMessage);
begin
  inherited;
  SendMessage(FPartner.Handle,WM_VSCROLL,SB_VERT,0);
end;

{ TForm3 }

procedure TForm3.FormCreate(Sender: TObject);
var
  Memo: TMyMemo;
begin
  with TMyMemo.Create(Self) do
  begin
    Parent := Self;
    Left := 3;
    Top := 8;
    Width := 185;
    Height := 89;
    ScrollBars := ssVertical;
    Lines.Text := Memo1.Lines.Text;
    Partner := Memo1;
  end;
end;

end.
  Mit Zitat antworten Zitat