Jak ustawić kursor(klawiatury wewnątrz Memo) na żądanej pozycji, tak aby wewnątrz tekstu (w określonym miejscu) wstawić jakiś znak ??
Memo1.SelStart := x; // (Pozycja jako Integer);
Nie dokońca o to mi chodziło.
polecenie memo.selStart posiada jedną wartość.
a pozycja kursora posiada 2 wartości (numer linii oraz numer pozycji w tej linii).
A poza tym jeśli najpierw użyje polecenia Sel.start, a następnie memo.lines.insert() to wówczas to co było zaznaczone zostaje skasowane i w to miejsce wstawiony zostaje noey znak
A poza tym jeśli najpierw użyje polecenia Sel.start, a następnie memo.lines.insert() to wówczas to co było zaznaczone zostaje skasowane i w to miejsce wstawiony zostanie nowy znak. Mi tym czasem chodzi o to aby ten znak wstawić przed (miejsce w którym zaczyna się) zaznaczenie.
Musisz znać, w której linijce w Memo, chcesz dokonać zmian. Załóżmy że w linii 20-tej.
procedure TForm1.ListBox1Click(Sender: TObject);
begin
Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, 19, 0);
end;
Teraz pobierasz tekst z tej linijki
Text := Memo1.Lines.Strings[20];
i sprawdzasz funkcją Pos i Length w którym miejscu znajduje się znak który chcesz zmienić z poziomu Memo.
Następnie znając odległość, zaznaczasz tekst w Memo.
Memo1.SelLength := Pozycja;
opi napisał:
"Musisz znać, w której linijce w Memo, chcesz dokonać zmian"
Tylko że ja nigdy nie będe znał nr lini w której będzie wstawiany znak. Moge znać co najwyżej index (pozycji) kursora, który moge odczytać memo1.selStart
A tak poza tym - czy tyle tych kombinacji jest potrzebnych do tego aby wstawić znak (przed miejscem gdzie rozpoczyna się zaznaczenie) oraz zaraz za miejscem gdzie ono się kończy ??
np. mamy taki ciąg:
123456789
a po zaznaczeniu (go od liczby 4 do liczby siedem włącznie)i naciśnięciu przycisku ma on wyglądać tak:
123<b>4567</b>89
oczywiście zaznaczenie może obejmować kilka linii tekstu
eh... Trzeba mówić tak od razu...
memo1.SelText:='<b>'+memo1.SelText+'</b>';