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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 22:05   #1
dalien
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 17
По умолчанию поиск текста из edit по StringGrid [?]

Доброго времени.
Возникла проблема при работе со StringGrid. Помогите пожалуйста кто может.
У меня есть Edit и StringGrid с N количеством строк которые загружаются из БД.
Мне необходимо сравнить текст введенный в Edit с текстом StringGrida в 4 колонке по всем строкам
.Если текст edita хоть в одной из строчек в 4 колонке StringGrida совпал, то нужно выделить строку, в которой найдено значение(свойство goRowSelect в StringGrid установлено в true,
нулевая строка при загрузке stringgrida являетсятся заголовком), в столбце может быть несколько совпадений.

проблема в том,что если искомый текст из edit'a находится не на первой строке,то все работает правильно,
а если на первой он её не сравнивает cо строкой из edit

Спасибо заранее, буду признателен,с уважением dalien.
Код:

procedure TForm6.FindNext(var g:TstringGrid; s:string);
var LRow,LCol,R,C,i,j:integer;
begin
   R := g.Row;
   C:=4;
   inc( R );
          While Pos(AnsiUpperCase(s),AnsiUpperCase(g.Cells[C,R])) = 0 do
            begin
               inc( R );
               if R = g.RowCount  then
                      showmessage('столбец проверен');
                 if (R = LRow) then 
                  begin
                      ShowMessage('Ничего не нашел');
                      g.Row:=1;
                      Exit;
                  end;
             end;  
      g.Row := R;
      g.SetFocus;
   end;
//вызов процедуры
procedure TForm6.BitBtn1Click(Sender: TObject);
begin
    FindNext(form1.StringGrid2,Edit1.Text);
end;

Последний раз редактировалось dalien; 18.06.2009 в 22:15. Причина: добавление картинки
dalien вне форума Ответить с цитированием
Старый 18.06.2009, 22:22   #2
kinderproc
Пользователь
 
Регистрация: 10.06.2009
Сообщений: 13
По умолчанию

Что-то у тебя в коде напутано, у тебя цикл while получается бесконечный, если ни одного совпадения не найдено...
А не с первой строки начинается, потому что ты inc(R) поставил в начале тела цикла, нужно в конце:

Код:
             begin
               if R = g.RowCount  then
                      showmessage('столбец проверен');
                 if (R = LRow) then 
                  begin
                      ShowMessage('Ничего не нашел');
                      g.Row:=1;
                      Exit;
                  end;
               inc( R );
             end;

Последний раз редактировалось kinderproc; 18.06.2009 в 22:26.
kinderproc вне форума Ответить с цитированием
Старый 18.06.2009, 22:33   #3
dalien
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 17
По умолчанию

спасибо, kinderproc сейчас буду пробовать
dalien вне форума Ответить с цитированием
Старый 18.06.2009, 22:35   #4
dalien
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 17
По умолчанию

к сожалению не работает,он снова при нажатии на кнопку вперед,держит фокус на 1 строке.Что делать?
dalien вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из Edit в StringGrid Xeon332 Общие вопросы Delphi 11 25.05.2009 08:28
Edit vs StringGrid artemavd Общие вопросы Delphi 3 13.07.2008 11:56
Edit мы StringGrid artemavd Общие вопросы Delphi 0 12.07.2008 13:50
Вывод столбцов StringGrid в Edit ***СкаЙ*** Помощь студентам 1 04.05.2007 08:16
Заполнение StringGrid из Edit Инна Помощь студентам 13 03.05.2007 13:44