Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Lepsev
66 / 14 / 1
Регистрация: 16.12.2009
Сообщений: 253

Поиск данных в StringGrid

24.08.2010, 12:26. Показов 1517. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста разобраться со StringGrid'ами.
Вот, собственно, условие:
База спортсменов:Данные, гражданство, происхождение, вид спорта, клуб или команда, личный рекорд.
Выбор по произвольному признаку. Поиск рекордсменов в заданном виде спорта.

Сделать StringGrid у меня ума хватило, а вот как сделать 2ю часть задания? =)

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
StringGrid1.Cells[0,1]:='Аршавин';
StringGrid1.Cells[0,0]:='Данные';
StringGrid1.Cells[0,2]:='Жирков';
StringGrid1.Cells[0,3]:='Измайлов';
StringGrid1.Cells[0,4]:='Сычёв';
StringGrid1.Cells[1,0]:='Гражданство';
StringGrid1.Cells[2,0]:='происхождение';
StringGrid1.Cells[3,0]:='вид спорта';
StringGrid1.Cells[4,0]:='Клуб';
StringGrid1.Cells[5,0]:='Рекорд';
StringGrid1.Cells[1,1]:='Русский';
StringGrid1.Cells[1,2]:='Еврей';
StringGrid1.Cells[1,3]:='Хохол';
StringGrid1.Cells[1,4]:='Чечен';
StringGrid1.Cells[2,1]:='Калмыкия';
StringGrid1.Cells[2,2]:='Украина';
StringGrid1.Cells[2,3]:='Египет';
StringGrid1.Cells[2,4]:='Имираты';
StringGrid1.Cells[3,1]:='Хоккей';
StringGrid1.Cells[3,2]:='Футбол';
StringGrid1.Cells[3,3]:='Волейбол';
StringGrid1.Cells[3,4]:='Теннис';
StringGrid1.Cells[4,1]:='ЦСка';
StringGrid1.Cells[4,2]:='Локомотив';
StringGrid1.Cells[4,3]:='Шинник';
StringGrid1.Cells[4,4]:='Спартак';
StringGrid1.Cells[5,1]:='10';
StringGrid1.Cells[5,2]:='12';
StringGrid1.Cells[5,3]:='21';
StringGrid1.Cells[5,4]:='48';
end;
 
end.
Т.е. Как мне осуществить поиск и выбор по признаку? Пожалуйста разьясните этот вопрос

У меня есть готовый вариант аналогичного задания, но я в нем разобраться не смог:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Menus;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure StringGrid1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  type
  info=record nasv,ras,adrtel,spec,usl,sobs,vrrab:string[50];
  end;
 
var
  Form1: TForm1;
  i:byte;
   f:file of info;
   r:info;
   N:integer;
implementation
 
{$R *.dfm}
 
 
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
 stringgrid1.Cells[0,0]:='         №';
 stringgrid1.Cells[1,0]:='    Номер рейса';
 stringgrid1.Cells[2,0]:='           Пункт отправления';
 stringgrid1.Cells[3,0]:='    Конечный пункт ';
 stringgrid1.Cells[4,0]:='   Кол-во свободных мест';
 stringgrid1.Cells[5,0]:='   Время в дороге( в мин.)' ;
 stringgrid1.Cells[6,0]:='   Стоимость билета(в руб.) ';
 
 stringgrid1.Cells[0,1]:='        1';
 stringgrid1.Cells[0,2]:='        2';
 stringgrid1.Cells[0,3]:='        3';
 stringgrid1.Cells[0,4]:='        4';
 stringgrid1.Cells[0,5]:='        5';
 stringgrid1.Cells[0,6]:='        6';
 stringgrid1.Cells[0,7]:='        7';
 stringgrid1.Cells[0,8]:='        8';
 
stringgrid1.Cells[1,1]:='407';
stringgrid1.Cells[1,2]:='489';
stringgrid1.Cells[1,3]:='768';
stringgrid1.Cells[1,4]:='432';
stringgrid1.Cells[1,5]:='487';
stringgrid1.Cells[1,6]:='421';
stringgrid1.Cells[1,7]:='559';
 
stringgrid1.Cells[2,1]:='Грязи ';
stringgrid1.Cells[2,2]:='Липецк';
stringgrid1.Cells[2,3]:='Воронеж';
stringgrid1.Cells[2,4]:='Тамбов';
stringgrid1.Cells[2,5]:='Грязи';
stringgrid1.Cells[2,6]:='Елец';
stringgrid1.Cells[2,7]:='Липецк';
 
stringgrid1.Cells[3,1]:='Липецк';
stringgrid1.Cells[3,2]:='Добринка';
stringgrid1.Cells[3,3]:='Москва';
stringgrid1.Cells[3,4]:='Тула';
stringgrid1.Cells[3,5]:='Елец';
stringgrid1.Cells[3,6]:='Прохоровка';
stringgrid1.Cells[3,7]:='Лебедянь';
 
 
 
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  for i:=1 to 7 do with stringgrid1 do begin
Cells[6,i]:=floattostr((strtofloat(Cells[4,i])+strtofloat(Cells[5,i]))/ 3);
 
  end;
end;
 
procedure TForm1.N6Click(Sender: TObject);
 var i:integer;
begin
 if SaveDialog1.Execute then
begin
AssignFile(F,SaveDialog1.FileName);
Rewrite(F);
i:=1;
while stringGrid1.Cells[3,i]<>'' do
begin
r.nasv:=stringGrid1.Cells[0,i];
r.ras:=stringGrid1.Cells[1,i];
r.adrtel:=stringGrid1.Cells[2,i];
r.spec:=stringGrid1.Cells[3,i];
r.usl:=stringGrid1.Cells[4,i];
r.sobs:=stringGrid1.Cells[5,i];
r.vrrab:=stringGrid1.Cells[6,i];
write(F,r);
i:=i+1
end;
closeFile(F)
end
 
end;
 
procedure TForm1.N7Click(Sender: TObject);
var i:integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(F,OpenDialog1.FileName);
Reset(F);
N:=0;
while not eof(f) do
begin
read(F,r);
stringGrid1.Cells[0,N+1]:=r.nasv;
stringGrid1.Cells[1,N+1]:=r.ras;
stringGrid1.Cells[2,N+1]:=r.adrtel;
stringGrid1.Cells[3,N+1]:=r.spec;
stringGrid1.Cells[4,N+1]:=r.usl;
stringGrid1.Cells[5,N+1]:=r.sobs;
stringGrid1.Cells[6,N+1]:=r.vrrab;
N:=N+1
end;
closeFile(F);
end
end;
 
procedure TForm1.N8Click(Sender: TObject);
begin
 close;
end;
 
end.
Для меня это пока абра-кадабра)) Если не сложно, обьясните что к чему.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.08.2010, 12:26
Ответы с готовыми решениями:

Поиск данных в StringGrid
Мне нужна помощь ваша, программисты, мне нужно сделать поиск данных в StringGrid. На форме находится компонент StringGrid, и он заполняется...

Поиск данных в StringGrid
незнаю в каком разделе создавать эту тему: в этом или в БД Delphi вообщем у меня есть таблица (компонент StringGrid) мне надо создать...

Выборка данных из StringGrid и их построчный поиск в StringList
Здравствуйте, прошу вашей помощи, ибо сам я уже отчаялся найти решение. Суть такая: У меня из екселя переносится таблица в...

15
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
24.08.2010, 12:33
Вводишь искомое название вида спорта. Идешь по столбцу "Вид спорта" , если совпадает, смотришь результат в соответствующем столбце, сравниваешь его с минимальным(максимальным), если больше или меньше, запоминаешь номер строки.
Выводишь все значения этой строки
1
 Аватар для Lepsev
66 / 14 / 1
Регистрация: 16.12.2009
Сообщений: 253
24.08.2010, 13:02  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Вводишь искомое название вида спорта.
Скажите, а какой компонент нужно использовать для ввода?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
24.08.2010, 13:03
Ну обычно Edit.
1
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
24.08.2010, 13:35
Можно метод InputBox()
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
24.08.2010, 14:04
Да любой компонент, в который можно ввести слово....
1
 Аватар для Lepsev
66 / 14 / 1
Регистрация: 16.12.2009
Сообщений: 253
27.08.2010, 15:22  [ТС]
Простите за глупый вопрос, но как мне связать stringGrid и Edit?
Delphi
1
2
3
4
5
procedure TForm1.Edit1Change(Sender: TObject);
var
begin
end;
end.
Через присваивание?
Delphi
1
2
with StringGrid1 do
    S:=Cells[Col, Row];
Puporev, не могли бы вы обьяснить на опытном примере всю вышеперечисленную процедуру?
Идешь по столбцу "Вид спорта" , если совпадает, смотришь результат в соответствующем столбце, сравниваешь его с минимальным(максимальным), если больше или меньше, запоминаешь номер строки.
Выводишь все значения этой строки
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
27.08.2010, 15:26
Lepsev, именно так
1
 Аватар для Lepsev
66 / 14 / 1
Регистрация: 16.12.2009
Сообщений: 253
28.08.2010, 12:35  [ТС]
А не подскажите, как это всё дело провернуть, а то у меня "таланта" не хватает
А то у меня скоро пересдача, а я всё не разобрался как аналогичные задания делать.
Помогите пожалуйста
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
28.08.2010, 13:03
Вообще хранить данные в Stringgrid не самая удачная затея. Таблица хороша только для вывода, а записи лучше хранить или в типизированном файле или в массиве, с ними намного удобнее работать.
1
 Аватар для Lepsev
66 / 14 / 1
Регистрация: 16.12.2009
Сообщений: 253
28.08.2010, 14:48  [ТС]
Я конечно не спорю по вышеизложенному, но у меня чёткие рамки использования лишь stringGrid.
Если вам не сложно покажите "на пальцах" что да как нужно сделать
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
28.08.2010, 14:58
Цитата Сообщение от Lepsev Посмотреть сообщение
У меня есть готовый вариант аналогичного задания,
Но там же файл используется для хранения информации..
1
{c0Der}
 Аватар для Markus_13
138 / 123 / 18
Регистрация: 20.02.2009
Сообщений: 434
Записей в блоге: 4
28.08.2010, 16:59
Lepsev, на вот, радуйся, написал тебе прогу:
Вложения
Тип файла: zip SportBase.zip (190.3 Кб, 24 просмотров)
1
 Аватар для Lepsev
66 / 14 / 1
Регистрация: 16.12.2009
Сообщений: 253
29.08.2010, 15:34  [ТС]
Markus_13, Спасибо)
Ух мать моя женщина!)))
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 4
05.06.2017, 22:42
Респект тебе!)
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 4
05.06.2017, 22:43
Цитата Сообщение от Markus_13 Посмотреть сообщение
Lepsev, на вот, радуйся, написал тебе прогу:
Спасибо бро, ты не представляешь как помог мне!)))
P.s. Я забрел сюда в отчаянии, а вышел на радостях))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2017, 22:43
Помогаю со студенческими работами здесь

Что лучше реализовать - поиск по stringgrid или поиск по источнику его данных (txt)
здравствуйте, нужно в программу добавить функцию поиска, данные из stringgrid хранятся в txt файле и подгружаются в таблицу, посоветуйте...

Поиск в Stringgrid и вывод строк в новый Stringgrid
Привет. Наверное этот вопрос задавался уже много раз, но я не могу никак понять: 1. У меня есть Stringgrid в нем содержатся записи: фио,...

Перенос данных из одного StringGrid в другой StringGrid
Здравствуйте . Есть очередной вопрос с матрицами. Есть два StringGrid. В одном столбце первой матрицы есть цифровые значения. Есть Edit....

Поиск перебором или бинарный поиск в StringGrid
как реализовать поиск в stringgrid (поиск перебором или бинарный поиск)? напр.задаешь в edit.text что искать и stringgrid выводит только...

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru