Консультация № 140101
16.07.2008, 23:56
0.00 руб.
0 3 1
Уважаемые эксперты, подскажите как узнать позицию текстового курсора в элементах TEdit и TStringGrid и вставить символ в это место.

Обсуждение

Неизвестный
17.07.2008, 15:11
общий
это ответ
Здравствуйте, Хукаленко Дмитрий!
В свойстве Edit‘а <b>SelStart</b> хранится позиция курсора.
Вот процедура которая вставляет строку в Edit:

<font color=green>{Edit-компонент TEdit, str-строка для вставки}</font>
<b>procedure</b> InsertToEdit(<b>var</b> Edit: TEdit; <b>const</b> str: ShortString);
<b>var</b>
 {Временная строка}
 s: <b>string</b>;
<b>begin</b>
 <font color=green>{Копируем в s содержимое Edit‘а, т.к. напримую с Edit‘ом процедура Insert не может}</font>
 s:=edit.Text;
 <font color=green>{Вставляем str туда где находится курсор
 insert(source: ShortString; var s: openstring; index: Integer;
 source - строка которую надо вставит в строку s, Index-позиция куда вставить}</font>
 insert(str, s, edit.SelStart+1);
 <font color=green>{Обновляенм содержимое Edit‘а}</font>
 Edit.Text:=s;
<b>end</b>;

Удачи!!!
Неизвестный
18.07.2008, 21:07
общий
Чтобы выполнить поставленную задачу с StringGrid, можно создать собственный класс, наследуемый от TStringGrid с собственным обработчиком редактирования ячеек (с самим TStringGrid у меня получился один вариант, но он достаточно криво работает).
Неизвестный
20.07.2008, 21:47
общий
Создавать собственные классы для меня пока слишком круть, зато теперь я знаю, что в TStringGrid нет свтроенной функции для этих целей. Спасибо за внимание!
Форма ответа