Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lazarus

Войти
Регистрация
Восстановить пароль
 
mr-anri
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 41
#1

Проверка на повтор в StringGrid - Lazarus

22.10.2014, 21:09. Просмотров 714. Ответов 5
Метки нет (Все метки)

вторая тема за сегодня, надеюсь это не запрещено. Если по делу. нужно реализовать функцию проверки на повторение значений во втором столбце таблицы представленной в stringgrid

попытался сделать такой цикл
Delphi
1
2
3
4
5
6
7
 for m:= 1 to StringGrid1.RowCount - 1 do
        begin
    if StrToInt(StringGrid2.Cells[m,2])=StrToInt(StringGrid2.Cells[m,2]) then
    begin
    ShowMessage('значение введеного кода повторяется');
    end;
    end;
но я прекрасно понимаю что он будет проверять и то значение что мы только что ввели, как сделать проверку со всеми предыдущими элементами но не с тем что мы сейчас вводим? так же я понимаю что нужно организовать цикл по ячейкам этого столбца и если будет найдено совпадение то выводить сообщение. вроде цикл сделал, вывод сообщения тоже. вобщем пожалуйста подскажите как довести эту идею до работоспособности?

Добавлено через 8 минут
нашел у себя ошибки, в этом фрагменте кода исправил, однако нужного результата так и не добился
Delphi
1
2
3
4
5
6
7
for m:= 2 to StringGrid1.RowCount - 1 do
       begin
   if StrToInt(StringGrid2.Cells[2,m])=StrToInt(StringGrid2.Cells[2,RowCount - 1]) then
   begin
   ShowMessage('значение введеного кода повторяется');
   end;
   end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2014, 21:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверка на повтор в StringGrid (Lazarus):

Перемещение картинок по форме (не повтор) - Delphi
Всем добрый день. В общем проблема такая: Требуется поместить на форму несколько картинок (неизвестно сколько) и затем перемещать их по...

Проверка input на повтор его value - jQuery
Каждый раз при вызове ф-ции создается input. Имеющий в своем value идентификатор(id), из соответствующей табл. в БД. function fill(id) { ...

Проверка вводимых данных на повтор - MS Excel
Есть таблица. В одном из столбцов вводятся адреса сайтов. Как прописать проверку вводимых данных на повтор? Чтоб ячейка заливалась цветом...

Проверка на повтор при записи в файл - C++
Уважаемые, нужна помощь!!Суть вот в чём, в файл записываются данные(символы, цифры и т.п) и надо сделать так, что бы не было повторов, ...

проверка StringGrid - Delphi
как сделать проверку в StringGrid'e что введены числа а не что-то другое....просто даже идей нету... в StringGrid'e хранится одномерный...

Проверка ввода в StringGrid - Delphi
Здавствуйте, подскажите в чем проблема, в общем суть такая, проверять клавиши нажатые при вводе и если они вводятся в заданные ячейки то их...

5
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25535 / 17088 / 5416
Регистрация: 22.10.2011
Сообщений: 30,257
Записей в блоге: 7
22.10.2014, 21:32 #2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var L : TStringList;
begin
  L := TStringList.Create;
  L.AddStrings(StringGrid1.Cols[2]);
  // Удаляем из списка ту строку грида, в которую вводится значение, которое надо сравнить с остальными
  L.Delete(StringGrid1.Row); 
 
  // В оставшихся строках ищем совпадения
  if L.IndexOf(Edit1.Text) >= 0 then // или L.IndexOf(StringGrid1.Cells[2, StringGrid1.Row]) >= 0
    ShowMessage('Введенное значение повторяется');
  L.Free;
end;
, например
0
mr-anri
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 41
22.10.2014, 21:44  [ТС] #3
спасибо за ответ но не работает. объясняю. мне кажется допущенна ошибка в колонках,их всего 2 а следовательно нужно написать (или я ошибаюсь) ибо иначе вылезает ошибка
Delphi
1
2
3
4
5
6
7
8
9
10
L := TStringList.Create;
  L.AddStrings(StringGrid2.Cols[1]);
  // Удаляем из списка ту строку грида, в которую вводится значение, которое надо сравнить с остальными
  L.Delete(StringGrid2.Row);
 
  // В оставшихся строках ищем совпадения
  if L.IndexOf(StringGrid2.Cells[1, StringGrid2.Row]) >= 0 then // или L.IndexOf(StringGrid1.Cells[2, StringGrid1.Row]) >= 0
    ShowMessage('Введенное значение повторяется');
  L.Free;
end;
однако теперь вылезает сообщение всегда, при нажатии на кнопку, вне зависимости от того повторяются значения или нет.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25535 / 17088 / 5416
Регистрация: 22.10.2011
Сообщений: 30,257
Записей в блоге: 7
23.10.2014, 00:10 #4
Я тестировал, нормально работает. При нажатии на кнопку проверяется значение, введенное в Edit, и, если все нормально - то оно заносится в выбранную ячейку. Если у тебя сделано как-то по-другому - значит, допиливай к своим реалиям...
0
mr-anri
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 41
23.10.2014, 00:54  [ТС] #5
сделал под себя, что бы работало так как мне надо пришлось удалить строчку
Delphi
1
 L.Delete(StringGrid2.Row);
либо я неясно выразился либо вы меня не правильно поняли. в любом случае спасибо огромное, буду изучать что вы вообще мне тут написали...надо вникнуть в суть, что бы в дальнейшем мог сам до такого додуматься
0
Puporev
Модератор
54035 / 41668 / 14746
Регистрация: 18.05.2008
Сообщений: 97,981
23.10.2014, 09:13 #6
Чисто поправленный код ТС.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
k:=0;
m:=2;
while(m<=StringGrid1.RowCount - 2)and(k=0) do
 begin
  n:=m+1;
  while(n<=StringGrid1.RowCount - 1)and(k=0) do
  if StrToInt(StringGrid2.Cells[2,m])=StrToInt(StringGrid2.Cells[2,n]) then k:=1
  else inc(n);
  if k=0 then inc(m);
 end;
if k=1 then
 begin
   ShowMessage('значение введенного кода повторяется');
   exit
 end;
0
23.10.2014, 09:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2014, 09:13
Привет! Вот еще темы с ответами:

Проверка значений в StringGrid - C++ Builder
Необходимо сделать проверку в ячейках Stringgrid. Если введено значение меньше, больше значения то необходимо обнулить ячейку и вывести...

StringGrid и проверка на буквы - C++ Builder
Здравствуйте все.. У меня проблема. У меня задание: надо зделать таблицу, в таблице во третей колонке нигде не должны быть буквы.. я...

Проверка определенных ячеек StringGrid - Delphi
Помогите с проверкой 2ух ячеек StringGrid (проверка на корректный ввод даты, что бы не было такого, что вводим &quot;1&quot; или...

StringGrid проверка даты рождения - C++ Builder
Я с excel подтягиваю таблицу. В таблице есть даты рождения. Как мне проверить действительно это дата рождения и ее корректность. Например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru