|
Вопрос # 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]:
Просто на ячейку можно наложить маску ввода, соответственно желательно знать его максимальную длину.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|