Есть однострочный редактор Edit(туда вводится число) и кнопка SBC. При нажатии на кнопку в месте, где находится курсор, ставится запятая(если запятая в этом числе уже есть, то ставится новая в месте, где находится курсор). Вот текст события OnClick кнопки SBC:
Код:
procedure TForm1.SBCClick(Sender: TObject);
var s:string;
i:integer;
begin
s:=Edit.Text;
for i:=1 to length(s) do //проверка на наличие запятой
begin
if s[i]=',' then
if Edit.SelStart<>0 then //если курсор в начале строки, то запятая остается
Delete(s,i,1); //удаляется запятая
end;
if Edit.SelStart<>0 then //если курсор в начале строки, то запятую ставить не надо
Insert(',',s,Edit.SelStart); //в положение курсора ставится запятая
Edit.Text:=s;
end;
Вроде бы должно работать, но нет! Если курсор стоит после первой цифры, то запятая ставится в самое начало числа(пример - 5555 при курсоре, стоящем после первой 5, при нажатии на кнопку превращается в ,5555). А если курсор стоит перед последней цифрой, то отделяются почему-то две цифры!(пример - 5555 при курсоре, стоящем перед последней 5, превращается в 55,55). Прошу помочь.