| 
| 
 | Вопрос # 1 079/ вопрос открыт / | 
 |  Здравствуйте, эксперты!У меня ещё один вопрос по StringGrid.Есть таблица,в ней я хочу,что бы в режиме редактирования находились допустим лишь n и m столбцы и в n-ый столбец я не мог завести ничего кроме цифр,а в m-ый кроме букв,т.е наложить на них типа маски.Какие события я тут должен обработать. 
|  |   Вопрос задал: GAZ (статус: Посетитель)Вопрос отправлен: 3 ноября 2007, 09:11
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Feniks Здравствуйте, GAZ!StringGrid умеет возвращать Вам текущую колонку и строку, а следовательно и можно обрабатывать нажатые кнопки. Для этого надо использовать события OnKeyDown, OnKePress. Где Вы и будете определять, что человек вводит. Вот пример ограничения ввода по длинне, событие OnKePress:
 
 if key <> #8 then 
begin {допускаем backspace/Del}
len := length(grid.cells[grid.col, grid.row]);
if len >= ваша желаемая максимальная длина then 
begin
   messageBeep (0);
   key := #0;
end;
end;
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 5 ноября 2007, 11:33
 Оценка за ответ: 4
 |  Ответ #2. Отвечает эксперт: Вадим К Здравствуйте, GAZ!Предложенный Feniks способ хорош, но он не даёт "полного контроля". Ведь иногда хочеться, что бы можно было вводить по маске или каким-то хитрым правилам.
 Здесь поможет только "внедрение редактора". Вот например как в этом примере http://www.cyberguru.ru/delphi-sources/ui/kak-pokazyvat-nestandartnyj-vstroennyj-redaktor-inplace-editor-v-yatchejke-stringgrid.html
 Тут внедряют Combobox, но ведь можно MaskEdit.
 А можно и Edit и обрабатывая у него KeyPress можно получить нужную функциональность. Ведь в нем можно ещё и узнать позицию курсора в строке ввода - Edit.SelStart
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 5 ноября 2007, 12:01
 Оценка за ответ: 4
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 3 ноября 2007, 11:31; участников в обсуждении: 2. 
|   | Николай Рубан (статус: 10-ый класс), 3 ноября 2007, 11:12 [#1]:А какова может быть максимальная длина текста для воода? |  
|   | GAZ (статус: Посетитель), 3 ноября 2007, 11:17 [#2]:2-3 слова,а в связи с чем этот вопрос |  
|   | Николай Рубан (статус: 10-ый класс), 3 ноября 2007, 11:31 [#3]:Просто на ячейку можно наложить маску ввода, соответственно желательно знать его максимальную длину. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |