1
런타임에 텍스트를 만들고 채우는 TRichMemo
개체가 있습니다.새 텍스트를 추가 할 때 TRichMemo가 텍스트 특성을 재설정하지 못하도록하는 방법
10 초마다 기능을 트리거하는 타이머가 있습니다. 함수는 다음과 같습니다.
procedure TServerSideForm.NewLineTimerTimer(Sender: TObject);
var
timeForward: TDateTime;
timerText: wideString;
startRange, endRange: longInt;
begin
timeForward := Time;
timeForward := IncSecond(timeForward, ServerSideForm.NewLineTimer.Interval div 1000);
//...
timerText := TimeToStr(Time) + ' - ' + TimeToStr(timeForward);
startRange := Length(WindowMemo.Text);
WindowMemo.Text := WindowMemo.Text + sLineBreak + sLineBreak + timerText + sLineBreak + sLineBreak;
endRange := Length(WindowMemo.Text) - 1;
WindowMemo.SetRangeColor(startRange, endRange, clGreen);
//...
end;
모든 것이 완벽하게 작동하며 원하는 범위의 텍스트가 녹색이됩니다.
그러나 내 새 텍스트를 TRichMemo
에 추가하면 모든 것이 검은 색 텍스트로 다시 설정됩니다.
왜 이런 일이 발생합니까? 이 리셋이 일어나지 않도록하는 방법이 있습니까?
p. SetRangeParams
기능을 사용할 때와 동일한 상황이 발생합니다.
append 문제는 내부적으로 간단합니다 :'Lines.Add (text)'입니다. 따라서 다른 함수에서 텍스트에 단일 문자를 추가하기 때문에 원하지 않는 추가 linebreak를 추가합니다. –
@lilbroomstick 귀하의 회신에 답변을 추가했습니다. –
정말 고마워요! 이게 내가 필요한거야. –