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.
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.
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
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? :)
Oczywiście pomyliłem kod przy pisaniu postaMemo1.Lines[n].Length zamiast .Length(Memo1.Lines[n]).
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);