![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Синхронизировать скроллинг двух TRichEdit
misha_gr © (2008-03-04 16:23:00)Как можно синхронизировать скроллинг двух TRichEdit'ов? Наподобие того, как это делается в Total Commander при сравнении двух файлов по содержимому?
misha_gr (2008-03-04 19:42:00) [1]Ползунки бегают, но вот содержимое не скроллится...
Чего не хватает?
procedure TFrameCompare.AdjustRichEdits(Sender : TObject);
var ThumbRes : longint; R : TRect; SI_Vert, SI_Horz: TScrollInfo;
begin
if Sender = RichEdit1 then
begin
SI_Vert.cbSize := SizeOf(SI_Vert);
SI_Vert.fMask := SIF_ALL;
GetScrollInfo(RichEdit1.Handle, SB_Vert, SI_Vert);
SI_Horz.cbSize := SizeOf(SI_Horz);
SI_Horz.fMask := SIF_ALL;
GetScrollInfo(RichEdit1.Handle, SB_HORZ, SI_Horz);
AdjustEdit(SI_Vert, SI_Horz, RichEdit2);
end
else if Sender = RichEdit2 then
begin
SI_Vert.cbSize := SizeOf(SI_Vert);
SI_Vert.fMask := SIF_ALL;
GetScrollInfo(RichEdit2.Handle, SB_Vert, SI_Vert);
SI_Horz.cbSize := SizeOf(SI_Horz);
SI_Horz.fMask := SIF_ALL;
GetScrollInfo(RichEdit2.Handle, SB_HORZ, SI_Horz);
AdjustEdit(SI_Vert, SI_Horz, RichEdit1);
end
end;
procedure TFrameCompare.AdjustEdit(const SI_Vert, SI_Horz: TScrollInfo; AControl : TWinControl);
var bRes : integer;
begin
FAdjustment := true;
try
bRes := SetScrollInfo(AControl.Handle, SB_Vert, SI_Vert, true);
bRes := SetScrollInfo(AControl.Handle, SB_Horz, SI_Horz, true);
AControl.Refresh;
finally
FAdjustment := false;
end;
end;