Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 079

/ вопрос открыт /

Здравствуйте, эксперты!У меня ещё один вопрос по StringGrid.Есть таблица,в ней я хочу,что бы в режиме редактирования находились допустим лишь n и m столбцы и в n-ый столбец я не мог завести ничего кроме цифр,а в m-ый кроме букв,т.е наложить на них типа маски.Какие события я тут должен обработать.

GAZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

GAZ (статус: Посетитель), 3 ноября 2007, 11:17 [#2]:

2-3 слова,а в связи с чем этот вопрос
Николай Рубан

Николай Рубан (статус: 10-ый класс), 3 ноября 2007, 11:31 [#3]:

Просто на ячейку можно наложить маску ввода, соответственно желательно знать его максимальную длину.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 12 декабря 2017, 19:15
Выполнено за 0.03 сек.
Рейтинг@Mail.ru