Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > синхронизировать два TJvRichEdit


Автор: klyaksa 20.10.2010, 21:03
На форме два TJvRichEdit. При изменении одного должен меняться другой.

Делаю 

Код

procedure TForm1.JvRichEdit1Change(Sender: TObject);
begin
  //
  RichEditToRichEdit(JvRichEdit1, JvRichEdit2);
  //
end;


для одного и подобную для другого.
Но происходит бег по кругу, Change вызывается и вызывается.
Пробовал добавлять (в строчках //) JvRichEdit2.ReadOnly := True - не помогает, JvRichEdit2.Lines.BeginUpdate - тоже...
Больше идей нет... Подскажите.

п.с.
Код

procedure RichEditToRichEdit(RichEditFrom, RichEditTo: TJvRichEdit);
var
  MStream: TMemoryStream;
begin
  MStream := TMemoryStream.Create;
  try
    RichEditFrom.PlainText := false;
    RichEditTo.PlainText := false;
    RichEditFrom.Lines.SaveToStream(MStream);
    MStream.Seek(soFromBeginning, 0);
    RichEditTo.Lines.BeginUpdate;
    RichEditTo.Lines.LoadFromStream(MStream);
    RichEditTo.SelStart := RichEditFrom.SelStart;
    RichEditTo.SelLength := RichEditFrom.SelLength;
  finally
    RichEditTo.Lines.EndUpdate;
    MStream.Free;
  end;
end;


Добавлено через 4 минуты и 12 секунд
Все же придумал:
Код

  try
    MainQuestionText.OnChange := nil;
    RichEditToRichEdit(MainQuestionText, QuestionText[0]);
    SetNewModifiedTask(Sender);
  finally
    MainQuestionText.OnChange := QuestionTextMainChange;
  end;


Но какие еще есть варианты?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)