Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск текста из edit по StringGrid 
V
    Опции темы
dalien
Дата 18.6.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



Доброго времени.
Возникла проблема при работе со 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;



Добавлено @ 20:51
подскажите как правильно это реализовать,я целый день сегодня бился -а итог нулевой


Это сообщение отредактировал(а) dalien - 18.6.2009, 21:20
PM MAIL   Вверх
dalien
Дата 18.6.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



неужели никто не откликнется и не поможет(((???
Люди добрые, помогите пожалуйста!!!


Это сообщение отредактировал(а) dalien - 18.6.2009, 21:09
PM MAIL   Вверх
Keeper89
Дата 18.6.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Код

procedure TForm6.BitBtn1Click(Sender: TObject);
var
  foundIndex: Integer;
begin

  if Trim(Edit1.Text) = '' then Exit;

  foundIndex := StringGrid1.Cols[4].IndexOf(Edit1.Text);
  if foundIndex <> -1 then
  begin
    StringGrid1.Row := foundIndex;
    StringGrid1.Invalidate;
    StringGrid1.SetFocus;
  end
  else
    ShowMessage('Ничего не найдено');
end;



--------------------
PM MAIL WWW   Вверх
dalien
Дата 18.6.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



keeper89, он дальше первой строки фокус не перемещает,если в столбце есть ещё искомые значения. Становится на первой и хоть тресни(
PM MAIL   Вверх
Keeper89
Дата 18.6.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Цитата(dalien @  18.6.2009,  22:57 Найти цитируемый пост)
он дальше первой строки фокус не перемещает,если в столбце есть ещё искомые значения

Так в чем состоит задача? Найти первое значение и установить фокус в эту строку?


--------------------
PM MAIL WWW   Вверх
Данкинг
Дата 18.6.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(dalien @  18.6.2009,  21:43 Найти цитируемый пост)
У меня есть Edit и StringGrid с N количеством строк которые загружаются из БД.

Вообще-то из БД обычно грузят в DBGrid.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
dalien
Дата 18.6.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.6.2009

Репутация: нет
Всего: нет




искомая строка:35
столбец StringGrida:35
                                 12
                                 23
                                 35
                                 7
                                 21
                                 35
     
при нажатии на кнопку "Вперед" он выделяет первую строку,где нашел значение 35.
Дальше я нажимаю кнопку "Вперед", по которой он должен переместиться на 4 строку и выделить её,вот собственно и вся задача.
(только пока не по зубам)

Для Данкинга: я имею не слишком большой опыт программирования(Sql+delphi),как получается так и делаю 
(с DBGrig никогда не работал,поэтому и не стал его использовать)
PM MAIL   Вверх
Данкинг
Дата 18.6.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(dalien @  18.6.2009,  23:26 Найти цитируемый пост)
(с DBGrig никогда не работал,поэтому и не стал его использовать) 

Самое время попробовать, так как в DataSet'е поиск осуществлять куда удобнее, к примеру, через Locate. А выводить таблицу в StringGrid - это, скажем так, никуда не годится. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Keeper89
Дата 18.6.2009, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Данкинг глаголит истину. А так придется извращаться.
Запоминайте все вхождения нужного слова, и делайте кнопку перемещения самостоятельно. В DBGrid'е это все есть.


--------------------
PM MAIL WWW   Вверх
dalien
Дата 18.6.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



спасибо за помощь,что откликнулись и не оставили чела одного в смятении
PM MAIL   Вверх
dalien
Дата 19.6.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



thanks
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1073 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.