Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 12:27   #1
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию Как можно запретить повторный ввод нуля в ячейку StringGrid

Здравствуйте, Уважаемые форумчане.

Подскажите, пожалуйста, как можно запретить повторный ввод нуля в ячейку StringGrid если он уже был в нее введен, но чтобы можно было ввести значения такие как, например: 10 20 и т.д.

т.е. введен нуль и мы хотим ввести еще один нуль
Ветас вне форума Ответить с цитированием
Старый 12.11.2009, 12:37   #2
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Сейчас Delphi под рукой нету, но у стринг грида должен быть обработчик что-то типо onKeyDown, который передает нажатый символ и координаты ячейки, в нем надо сделать проверку:
Код:
if (Key {передаваемый символ} = '0') and (StringGrid1.Cells[X, Y] = '0') then Key := #0;
k1r1ch вне форума Ответить с цитированием
Старый 12.11.2009, 12:52   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот вам развернутый ответ:
Код:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key<>'0' then
exit;
if Pos('0',StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row])>0 then
key:=Chr(0);
end;
mihali4 вне форума Ответить с цитированием
Старый 12.11.2009, 13:30   #4
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

Большое спасибо за ответы! Все получилось!
Ветас вне форума Ответить с цитированием
Старый 12.11.2009, 13:30   #5
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

2mihali4: Так автору то надо, чтобы число 10, 20 и т.д. можно было ввести, поэтому Pos не подходит. Я считаю надо так:
Код:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = '0') and (StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row] = '0') then Key := #0;
end;
k1r1ch вне форума Ответить с цитированием
Старый 12.11.2009, 13:43   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от k1r1ch Посмотреть сообщение
2mihali4: Так автору то надо, чтобы число 10, 20 и т.д. можно было ввести, поэтому Pos не подходит. Я считаю надо так:
Код:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = '0') and (StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row] = '0') then Key := #0;
end;
Счетовод вы наш
Это ваш вариант не подходит, ибо он вообще ничего не делает.
Разве только запрещает ввести значок гальюна - "00"...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запретить ввод всего алфавита и логических знаков "=+-*/" prikolist Общие вопросы C/C++ 13 02.06.2010 20:47
Как запретить ввод второго символа "-" в StringGrid ? Ветас Помощь студентам 2 11.11.2009 22:17
Как запретить/разрешить ввод от клавиатуры любых символов (в том числе и юникодных)? SkAndrew Общие вопросы Delphi 8 15.08.2008 15:30
Как запретить переход на ячейку StringGrid Comer_Jus Общие вопросы Delphi 2 26.05.2008 15:04
Как раскрасить ячейку внутри StringGrid. GarfieldX Общие вопросы Delphi 5 14.02.2008 21:59