numer znaku w tekscie Delphi

0

Jak pobrac pozycje karetki Memo/RichEdid?
Klikam gdzieś w tekscie i otrzymuję komunikat który to numer znaku.

CaretPos podaje ' współrzędne' X i Y a ja chciałbym
mieć po prostu numer znaku licząc od początku tekstu.

0

Pewnie chodzi o SelStart

0

Mogło by być .selStart:= ale dalej brak parametru (innymi słowy SelStar działa w odwrotą stronę)
Liczyć potrafi każdy głupi ... a ja lubię proste sposoby

0

Założyłem że nie ma innego wyjścia tylko przeliczanie
CarTot,n:integer;
For n:=0 to Memo1.CaretPos.Y-1
do
CarTot:=CarTot+Memo1.Lines[n].Length
CarTo:=CarTo+Memo1.CaretPos.X

Procedura działa prawidłowo.OK. Ale rzecz w czymś innym. Procedura działa prawidłowo do lini nr.233. Później zwraca bzdury. Zacząłem się przyglądać i okazuje się że CaretPos na której procedura się opiera szwankuje.
Mianowicie do lini 233 jest dobrze ale już w następnej zaczyna na nowo zliczać linie dając CaretPos.Y=2(poprawnie byłoby 234) a CaretPos.X(na początku lini)= -65535(poprawnie byłoby 0) i tak już do końca dokumentu. Po powrocie do lini 233 i niższych jest dobrze.

może ktoś spotkał się z takim problemem i potrafi pomóc? :)

0

Oczywiście pomyliłem kod przy pisaniu postaMemo1.Lines[n].Length zamiast .Length(Memo1.Lines[n]).

0
goral napisał(a)

a ja chciałbym mieć po prostu numer znaku licząc od początku tekstu.

pelsta napisał(a)

Pewnie chodzi o SelStart

goral napisał(a)

a ja lubię proste sposoby

Sprawdź sobie w końcu:

Caption := IntToStr(Memo1.SelStart);
0

Faktycznie selStart jest najprostsze (bardziej być nie może).
Dzieki.
Nie wpadłem sam na to gdyż sądziłem że służy ono tylko do ustawiania pozycji karetki (a tu jak widać również pobiera jej pozycję) :)

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