Zmiana tekstu w onChange w TRichEdit

Zmiana tekstu w onChange w TRichEdit
PiXel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
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:

Kopiuj
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?

  • Rejestracja: dni
  • Ostatnio: dni
0

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

PiXel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
0

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

LE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 144
0

to moze weź daj inne zdarzenie np. onkeypress

PiXel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
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 ;)

_Nex_
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 507
0

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

Spróbuj tak:

Kopiuj
rchOutput.OnChange := nil;
rchOutput.Lines[rchOutput.Lines.Count - 1] := '[tu czas] ' + rchOutput.Lines[rchOutput.Lines.Count - 1];
rchOutput.OnChange := rchOutputChange;
PiXel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
0

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

adf88
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.