Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
1

Как сделать, чтоб по клику переходил на строку с таким же значением в столбце?

12.06.2014, 10:33. Показов 1382. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется процедура.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure Searche(st:TStringgrid; ed:TEdit;  k:integer);
var i,TopRow:integer;
begin
TopRow:=0;
for i:=1 to st.RowCount-1 do
if ed.Text=st.Cells[form1.ComboBox2.ItemIndex,i] then
 Begin
  TopRow:=i;
  st.Selection:=TGridRect(rect(0, i, 7, i));
  break;
end;
if TopRow=0 then
showmessage ('Не найдено данных')
end;
Проблема заключается в том, что оно выделяет самое верхнее значение из одинаковых.
Как сделать чтоб по клику переходил на строку с таким же значением в столбце?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2014, 10:33
Ответы с готовыми решениями:

Как сделать чтоб с микрофона звук переходил на колонки
Люди помогите как сделать чтоб с микрофона звук переходил на колонки

Нужно ввести текст, если он больше 80 символов нужно чтоб он переходил на новую строку
Написал клиент сервер, с командами add-запись в файл, remove-удаление из файла ,display-вывод на...

Как сделать чтоб при скачивании файла с таким же именем он переименовывался а не заменял первый
дело в том что я часто качаю всякие приколы и видосы с интернета и раньше когда я качал видео или...

как сделать так чтоб если яцейки в столбце одинаковые не выводилось полная строка?
Добрый вечер... ломаю голову у меня есть база... есть ячейки которые одинаквые как сделать так...

20
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 10:45 2
Лучший ответ Сообщение было отмечено Dutenass как решение

Решение

Убери break;
1
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 11:08  [ТС] 3
Puporev, спасибо большое :-)
А можно ли искать не полное значение, а его часть?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 11:12 4
Конечно можно.
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 11:14  [ТС] 5
Puporev, используя length?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 11:14 6
Delphi
1
if pos(ed.Text,st.Cells[form1.ComboBox2.ItemIndex,i])>0 then
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 19:01  [ТС] 7
Puporev, break убрал, но теперь он на последнее значение одинаковое перескакивает
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 19:44 8
Если бы я знал что Вы делаете и что нужно..
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 19:49  [ТС] 9
Puporev, Имеется StringGrid, заполненный данными. Edit, в котором вводится искомое значение. Если найдено, то выделяется строка с найденным значением...
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 20:02 10
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var
  Form1: TForm1;
  k:integer;
implementation
 
{$R *.dfm}
procedure Searche(st:TStringgrid; ed:TEdit;  k:integer);
var i,TopRow:integer;
begin
TopRow:=0;
for i:=k to st.RowCount-1 do
if ed.Text=st.Cells[form1.ComboBox1.ItemIndex,i] then
 Begin
  TopRow:=1;
  st.Selection:=TGridRect(rect(0, i, 7, i));
  break;
end;
if TopRow=0 then
showmessage ('Не найдено данных')
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
inc(k);
Searche(Stringgrid1,Edit1,k);
end;
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 20:20  [ТС] 11
Puporev, Увы, нет...
Я тоже пробовал инкремент вставлять в код (в разные места), результата никакого..
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 20:28 12
Цитата Сообщение от Dutenass Посмотреть сообщение
Увы, нет...
Почему? При каждом клике переходит на новую строку где есть нужное слово

Добавлено через 3 минуты
Ты break вернул на место?
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 20:32  [ТС] 13
Puporev, да
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 20:38 14
У мня так меняется при кликах
Миниатюры
Как сделать, чтоб по клику переходил на строку с таким же значением в столбце?   Как сделать, чтоб по клику переходил на строку с таким же значением в столбце?   Как сделать, чтоб по клику переходил на строку с таким же значением в столбце?  

Как сделать, чтоб по клику переходил на строку с таким же значением в столбце?  
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 20:52  [ТС] 15
Puporev, понял свой косяк, сплю просто уже)
Хм... А вот тут новая проблема: до конца stringgrid он доходит, и начинает искать значения дальше из-за инкремента... А дальше строк то нет, а он прибавляет и ищет..))
Я думаю, что нужно условие типа:
If k=RowCount-1 then...
верно?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 20:55 16
Да
Delphi
1
if k<Stringgrid1.RowCount then Searche(Stringgrid1,Edit1,k);
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
12.06.2014, 21:01  [ТС] 17
Puporev, доходит до последней строки и все... А как сделать возврат к первой строке и выполнять процедуру Searche?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.06.2014, 21:11 18
Слушай,творишь что-то и твори сам, я пас играть в темную.
0
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 169
13.06.2014, 05:54  [ТС] 19
Puporev, ну смотри... Ты написал процедуру, которая находит значения и выделяет строки, в которых найдено значение, верно?
А как сделать, чтоб когда цикл доходит до последней строки, возвращался на первую?
Я попробовал следующее:
Delphi
1
if i = st.rowcount-1 then k:=0
но не то)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.06.2014, 07:03 20
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
begin
inc(k);
Searche(Stringgrid1,Edit1,k);
if k>Stringgrid1.RowCount-1 then
 begin
  k:=0;
  Stringgrid1.Selection:=TGridRect(rect(0, 1, 0, 1));
 end;
 
end;
0
13.06.2014, 07:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2014, 07:03
Помогаю со студенческими работами здесь

Как сделать, чтобы значения заносились в первую строку со значением null?
Используется MySql С# Код string name_tbl_1 = textBox11.Text; int i; // счётчик...

Указать номер элемента со значением x или установить, что элемент с таким значением отсутствует
Здравствуйте, помогите пожалуйста найти ошибку) Задание:Требуется указать номер элемента со...

Отредактировать макрос так, чтобы он искал в столбце определенное значение и копировал строку с этим значением
Здравствуйте, как отредактировать этот макрос, чтобы он по значению в (А1) искал в столбце...

как сделать так, чтобы скрипт постоянно переходил по ссылке
Подскажите, как сделать чтобы скрипт постоянно переходил по ссылке(после перехода он вернется на ту...

Как сделать массив чтоб в первой строке начиналось с 3его столбика и ещё как подровнять столбцы в массиве чтоб аккуратно
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Как сделать что бы если пользователь переходил по ссылке в WebBrowser1, Url отображалось в TextBox1?
Привет всем, решил создать свой браузер на Visual Basic 2010. И столкнулся с проблемой: Как...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru