Synchroniser le défilement de 2 TRichedit

//...
private
PRichEdWndProc, POldWndProc: Pointer;
procedure RichEdWndProc( var Msg: TMessage);
//...


procedure TForm1.FormCreate(Sender: TObject);
begin
PRichEdWndProc := MakeObjectInstance(RichEdWndProc);
POldWndProc := Pointer(SetWindowLong(RichEdit1.Handle, GWL_WNDPROC,
Integer(PRichEdWndProc)));
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(PRichEdWndProc) then
begin
SetWindowLong(RichEdit1.Handle, GWL_WNDPROC, Integer(POldWndProc));
FreeObjectInstance(PRichEdWndProc);
end;
end;


procedure TForm1.RichEdWndProc( var Msg: TMessage);
begin
Msg.Result := CallWindowProc(POldWndProc, RichEdit1.Handle, Msg.Msg,
Msg.wParam, Msg.lParam);

if (Msg.Msg = WM_VSCROLL) and (LOWORD(Msg.wParam) = SB_THUMBTRACK) then
begin
Label1.Caption := 'Pos is ' + IntToStr(HIWORD(Msg.wParam));
RichEdit2.Perform(Msg.Msg, Msg.wParam, Msg.lParam);
SetScrollPos(RichEdit2.Handle, SB_VERT, HIWORD(Msg.wParam), True);
end;
end;
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour16/12/2005
VisualisationVu 1432 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Autre categorie
Auteur de l'article
Communauté Delphi Communauté Delphi
connecté le 02/11/2011
0 articles dans la section
Contacter l'auteur