Zmiana tekstu w onChange w TRichEdit

0

Pisze klienta irca i mam problemik. Chce aby użytkownik miał możliwość włączania/wyłączania znaczników czasowych. Aby ułatwić sobie życie nie chce sprawdzać tego przy każdej zmianie treści TRichEdit, więc w onChange naskrobałem coś takiego:

rchOutput.Lines[rchOutput.Lines.Count - 1] := '[tu czas] ' + rchOutput.Lines[rchOutput.Lines.Count - 1];

Dodaje wszystko pięknie tylko zawsze generuje błąd:
"RichEdit line insertion error."
Pytanie brzmi jak zmienić treść TRichEdit w onChange bez wywoływania błędu?

0

To proste. Jeśli w zdarzeniu onChange dla richedita wprowadzas zmiany w richedicie to rekurencyjnie w nieskonczonosc wywoluje sie zdarzenie onChange.

0

Wiem o tym. Chce zrobić tak, aby po zmianie w RichEdicie nie nastąpiło to zdarzenie.

0

to moze weź daj inne zdarzenie np. onkeypress

0

Kto powiedział, że zmieniam wartość poprzez klawiature? :>
A tak w ogóle to poradziłem już sobie. Oznaczyłem komentarzem linie w unicie RichEdita która wyświetlała błąd ;)

0

A jak kiedyś ta linijka będzie ci potrzebna? :P

Spróbuj tak:

rchOutput.OnChange := nil;
rchOutput.Lines[rchOutput.Lines.Count - 1] := '[tu czas] ' + rchOutput.Lines[rchOutput.Lines.Count - 1];
rchOutput.OnChange := rchOutputChange;
0

@_Nex_
Niestety Twój sposób nie działa. Pozostaje mi ten "mniej elegancki". :)

0
PiXel napisał(a)

@_Nex_
Niestety Twój sposób nie działa. Pozostaje mi ten "mniej elegancki". :)

Nie działa, bo nie potrafisz z niego skożystać. Sposób jest dobry. Napisałbyś coś więcej, a nie tylko że 'nie dizała'. A tak w ogóle OnChange to zle miejsce na tego typu operacje. Wrzuć ten fragment w funkcje odpowiedzialną za dodanie całej lini do rich edit. Jeśli nie masz takiej - stwórz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1