Можно ли при работа с компонентом TStringGrid именно в момент обработки события OnKeyPress определить к ячейке с какими координатами идет обращение ?
Не пользуясь обходными путями (обрабатывать событие OnSelectCell и в каких-то глобальных переменных запоминать координаты и использовать эти данные уже в OnKeyPress (это по крайней мере мне в голову пришло, но слишком уж муторно ))
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
Есть функция по обработке вводимого значения в какое-либо поле, выглядит она так :
function CheckKey(key: char; text: string): char; begin case key of '0'..'9', #8: result := key; ',', '.': if pos(DecimalSeparator, text) = 0 then result := DecimalSeparator else result := char(0); else result := char(0); end end;
Ее параметры : Key - символ передаваемый из OnKeyPress, text Текст над которым производится редактирование.
В случае применения этой функции к компоненту TEdit Выглядит так :
procedure Tfrm_Main.edt_setupKeyPress(Sender: TObject; var Key: Char); begin Key := CheckKey(Key, edt_setup.Text); end;
И работает правильно, ввести можно только числа и не более одного десятичного разделителя.
А вот при работе с ячейками, создается такое впечатление, что параметр text не обновляется после каждого события OnKeyPress, вследствии чего я могу ввести в ячейку соклько угодно десятичных разделителей ...
procedure Tfrm_Main.strGrd_arrayKeyPress(Sender: TObject; var Key: Char); begin Key := CheckKey(Key, strGrd_array.Cells[strGrd_array.Row, strGrd_array.Col]); end;
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'