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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 20:27   #1
Putin-mode
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 82
По умолчанию

Добрый вечер! Помогите пожалуйста доработать функцию поиска в Stringgrid. Делаю электронную версию телефонного журнала для воинской части.
Исходник http://rghost.ru/43106610

Таких Stringgrid будет много но это потом.
Мне как бы необходимо чтоб по нажатию на кнопку функция искала циклом введенное в edit слово или число по всем строкам и колонкам (или только по 3 на пример и 10, но это в будущем реализация)
При нахождении этого слова и числа необходимо чтоб это значение записывалось в лейбл потом дальше происходил поиск без нажатия кнопки и снова значение плюсуется в лейбл, и так по всем(а пока только по одной) таблицам.
И еще бы было замечательно если бы поиск был регистронезависимым и еще вопросик, как потом эту рекурсию переместить на следующие таблицы.

Вот код поиска для удобства

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
      SearchColumn, i: Integer;
begin
   for SearchColumn := 1 to StringGrid1.ColCount - 1 do begin
      for i := 1 to StringGrid1.RowCount - 1 do begin
          if Pos(Edit1.Text, Form1.StringGrid1.Rows[i].Strings[SearchColumn]) > 0 then begin
             StringGrid1.Col := SearchColumn;
             StringGrid1.Row := i ;
             Break ;
          end ;
      end ;
   end ;   
   //Edit1.Clear;
   //Edit1.SetFocus ;

   end;

end.
Заранее всем спасибо!

Или хотя бы подскажите как организовать поиск сначала в первом стрингриде потом во втором и так далее.

Последний раз редактировалось Stilet; 17.01.2013 в 22:38.
Putin-mode вне форума Ответить с цитированием
Старый 17.01.2013, 22:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure Sreach(Grid:TStringGrid);
var
      i: Integer; s:String;
begin
s:=AnsiLowerCase(Edit1.Text);
with Grid do 
   for i := 1 to RowCount - 1 do begin
          if Pos(s, AnsiLowerCase(Rows[i].Text) > 0 then begin
             Label1.Caption:=Label1.Caption+' '+s;
          end ;
   end ;   
end.
Цитата:
и так по всем(а пока только по одной) таблицам.
Код:
for i:=0 to ComponentsCount-1 do
 if Component[i] is TStringGrid then Sreach(TStringGrid(Component[i]));
Такая схема подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2013, 23:17   #3
Putin-mode
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 82
По умолчанию

Я думаю да, щас придется вспомнить как этот код прочитать правильно и под себя догнать, сложно для меня щас потому что уже месяцев 5 учу PHP и от дельфы пока отошел но вот пришлось вернуться! )))
Спасибо! Надеюсь доделаю этот код.
Putin-mode вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в StringGrid II_Dimit_II C++ Builder 13 18.06.2012 15:23
Поиск в StringGrid Retiree Компоненты Delphi 1 27.04.2012 09:52
Поиск по БД в StringGrid Anny_Apple БД в Delphi 12 27.05.2011 00:14
Поиск в StringGrid program123 Общие вопросы Delphi 6 13.09.2010 09:45
поиск в stringgrid Dimati87 Общие вопросы Delphi 6 17.07.2009 07:44