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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2009, 21:31   #1
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию Поиск в StringGrid

Делаю поиск так:
for i:=1 to StringGrid1.RowCount-1 do
for j:=1 to StringGrid1.ColCount-1 do
begin
if StringGrid1.Cells[i,j] = Edit5.Text then
StringGrid2.Cells[i,j]:=StringGrid1.Cells[i,j];
end;

Скажите пожалуйста, как сделать чтобы еще курсор(фокус) переходил на ту строку где найдено нужное слово
program123 вне форума Ответить с цитированием
Старый 12.02.2009, 23:16   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вы хотите сказать, что ЭТО у вас правильно работает???
Да будет вам известно, что в Cells[i,j] первым указывается индекс столбца (Col), а вторым - строки (Row), а не как у вас - наоборот.
А выделение показать проще простого:
Код:
StringGrid2.Row:=i;
StringGrid2.Col:=j;
mihali4 вне форума Ответить с цитированием
Старый 13.09.2010, 07:23   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Сделал поиск и показ сообщения с найденным значением так:
Код:
procedure TForm1.Button10Click(Sender: TObject);
begin
 for i:=1 to Form1.RzStringGrid2.RowCount - 1 do
 begin
  if Form1.RzStringGrid2.Cells[1,i] = Form1.Edit7.Text then
  begin
   Form1.RzStringGrid2.Row:=i;
   Form1.RzStringGrid2.Col:=1;
   ShowMessage('Çíà÷åíèå ' + Form1.Edit7.Text + ' íàéäåíî' );
  end;
 end;
end;
остался вопрос: как сделать выделение всей строки, в которой найдено значение красным цветом?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.09.2010, 07:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
artemavd
Ну что ж ты в гробницу то полез... Посмотрел бы на дату темы.
Вот так допустим мы найдем строки с искомым значением:
Код:
var i,j,k:integer;
begin
 l:=TList.Create;
 with StringGrid1 do
  for i:=1 to RowCount-1 do
   for j:=1 to ColCount-1 do begin
    k:=StrToIntDef(Cells[i,j],0);
    if k=2 then
     l.Add(pointer(j));
   end;
end;
Учитывая что l:TList;

Соответственно покрасим если номер этакой строки присутствует в списке:
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);

begin
 with StringGrid1 do begin
   if ACol*ARow=0 then exit;
   with Canvas do begin
    if (l.IndexOf(pointer(ARow))<>-1) then      Brush.Color:=clRed
    else     Brush.Color:=clWhite;
     FillRect(Rect);
     TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]);
  end;
 end;
end;
Ферштеен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.09.2010, 08:07   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Че-т не работает. Куда первый код-то поместить? Ошибка про AccessViolation вылетает.

P.S. я знаю, что тему старая, поэтому для того, чтобы не создавать новую подобную, я воспользовался поиском по форуму и оставил пост в наиболее подходящей теме. Чтобы не нарушать того, за что ругаю как модератор других.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.09.2010, 09:29   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Куда первый код-то поместить?
Он в OnCreate. смысл в том чтоб в TList (или любой динмассив) запоминать номера строк.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.09.2010, 09:45   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Ок, попробую щас. Лапшу тока съем . А скажи, можно ли прикрутить сюда проверку на наличие букв в числах в столбце? Например, пусть в таблице есть столбец:
4566542
8778952
его нужно проверить, все эти значения, на наличие "левых символов", т.е. чтобы если этот столбец будет таким:
4566542
8I7789A
то выполнить закраску строки, т.е. то, о чем шла речь выше

???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в StringGrid (другие темы не помогли :( ) LobsterOK Помощь студентам 5 29.11.2008 18:48
StringGrid StartMis Общие вопросы Delphi 5 21.11.2008 15:11
StringGrid Devikss Общие вопросы Delphi 8 25.05.2008 16:14
StringGrid bart77 Помощь студентам 9 27.04.2007 09:35
StringGrid dj jo Компоненты Delphi 2 15.02.2007 07:47