Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 01.10.2015
Сообщений: 127
1

Обращение ко всем компонентам DBGrid

30.06.2016, 08:51. Показов 1533. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток !
Столкнулся со следующей проблемой.
На форме "FormKarta" расположено 9 компонентов DBGrid. На этой же форме в разделе "Public" я создал переменную "table" класса TDBGrid.
На основной форме "MainForm" я уже делаю основные действия.
На рисунке показан код. Смысл в том, что я не хочу обращаться по отдельности к каждому DBGrid-у, а хочу сразу ко всем, обращаясь через его класс TDBGrid.
Смысл в том, что код написал, а выдает ошибку. Не понимаю в чем дело. Хотел обращаться на прямую через класс, но он не видит когда пишу "FormKarta.TDBGrid".
Подскажите, пожалуйста. Код и ошибка в изображении
Миниатюры
Обращение ко всем компонентам DBGrid  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2016, 08:51
Ответы с готовыми решениями:

Как обратиться ко всем компонентам на форме?
как обратиться ко всем компонентам на форме delphi

Обращение к компонентам формы
Добрый вечер, господа форумчане . Суть проблемы кратко : Задача состоит в том , что бы ...

Назначить один обработчик всем компонентам в контейнере
Дело такое: Есть панель (TPanel). На ней размещено множество компонентов, в т.ч. и другие панели,...

Как обратиться ко всем компонентам одного класса?
Добрый вечер. Подскажите пожалуйста как обратится ко всем компонентам Circle: TCircle XE5? В...

16
Модератор
9459 / 6212 / 2420
Регистрация: 21.01.2014
Сообщений: 26,489
Записей в блоге: 3
30.06.2016, 09:10 2
Вот кто бы еще что-то мог разглядеть на твоей фотографии...
Обратиться к каждому компоненту DBGrid на форме можно, например так...
Delphi
1
2
3
4
5
6
for i := 0 to ControlCount - 1 do
 if Controls[i] is TDBGrid
   then begin
          //Тут делаешь то, что тебе надо, например: 
          (Controls[i] as TDBGrid).ReadOnly := true;
         end;
0
5486 / 4401 / 1076
Регистрация: 29.08.2013
Сообщений: 27,577
Записей в блоге: 3
30.06.2016, 09:18 3
Цитата Сообщение от Alexartun Посмотреть сообщение
На форме "FormKarta" расположено 9 компонентов DBGrid. На этой же форме в разделе "Public" я создал переменную "table" класса TDBGrid.
проблема это когда ты не понимаешь зачем ты это делаешь

Цитата Сообщение от Alexartun Посмотреть сообщение
На рисунке показан код
это не код

А ошибка в том что ты используешь переменные, которые не объявлены
0
1 / 1 / 0
Регистрация: 01.10.2015
Сообщений: 127
30.06.2016, 09:19  [ТС] 4
У меня DBGrid находятся на другой форме. Когда обращаюсь FormKarta.TDBGrid, он не видит класс
0
5486 / 4401 / 1076
Регистрация: 29.08.2013
Сообщений: 27,577
Записей в блоге: 3
30.06.2016, 09:19 5
Цитата Сообщение от Alexartun Посмотреть сообщение
Когда обращаюсь FormKarta.TDBGrid
а кто тебя учил так делать?
0
1 / 1 / 0
Регистрация: 01.10.2015
Сообщений: 127
30.06.2016, 09:24  [ТС] 6
переменная Table у меня объявлена на форме FormKarta, и класс у нее TDBGrid
0
5486 / 4401 / 1076
Регистрация: 29.08.2013
Сообщений: 27,577
Записей в блоге: 3
30.06.2016, 09:28 7
Цитата Сообщение от qwertehok Посмотреть сообщение
А ошибка в том что ты используешь переменные, которые не объявлены
ты с вот этим проблему решил?


Цитата Сообщение от Alexartun Посмотреть сообщение
переменная Table у меня объявлена на форме FormKarta, и класс у нее TDBGrid
да пофиг какой у нее класс
если в uses есть тот модуль где объявлена глобальная переменная, то доступ к ней есть, указывай только имя формы

зачем тебе 9 таблиц на форме? это же ужас
0
1 / 1 / 0
Регистрация: 01.10.2015
Сообщений: 127
30.06.2016, 09:33  [ТС] 8
9 таблиц, т.к. база глобальная, и вывожу все на форме.
Я прописываю имя формы, ставлю точку, и после нее только компоненты. Когда ставлю просто класс TDBGrid, он подчеркивает ее красным цветом
0
5486 / 4401 / 1076
Регистрация: 29.08.2013
Сообщений: 27,577
Записей в блоге: 3
30.06.2016, 09:35 9
Цитата Сообщение от Alexartun Посмотреть сообщение
т.к. база глобальная
какая какая?

Цитата Сообщение от Alexartun Посмотреть сообщение
он подчеркивает ее красным цветом
даже странно если бы это было не так
0
1 / 1 / 0
Регистрация: 01.10.2015
Сообщений: 127
30.06.2016, 09:48  [ТС] 10
Глобальная )
В том смысле, что база разработана для предприятия.
И содержит очень много таблиц и информации. Разработана в Access.
И поэтому столько таблиц.
0
5486 / 4401 / 1076
Регистрация: 29.08.2013
Сообщений: 27,577
Записей в блоге: 3
30.06.2016, 09:56 11
Цитата Сообщение от Alexartun Посмотреть сообщение
В том смысле, что база разработана для предприятия.
Цитата Сообщение от Alexartun Посмотреть сообщение
Разработана в Access.
печально

Цитата Сообщение от Alexartun Посмотреть сообщение
И поэтому столько таблиц.
а вы думаете для каждой таблицы нужно свой Connection\Table\Query и тд?
0
1 / 1 / 0
Регистрация: 01.10.2015
Сообщений: 127
30.06.2016, 11:03  [ТС] 12
Нет. У меня 1 connection. И для каждой таблицы свой adotable
Иначе как я все выведу ?
0
5486 / 4401 / 1076
Регистрация: 29.08.2013
Сообщений: 27,577
Записей в блоге: 3
30.06.2016, 11:19 13
Цитата Сообщение от Alexartun Посмотреть сообщение
Иначе как я все выведу ?
у Table есть свойство - TableName. меняешь и выводишь
но обычно все не выводят - зачем пользователю 100 таблиц в каждой по 1000 строк?

Добавлено через 7 минут
и вообще - на дворе 21 век, сейчас ADOTable не используют
0
5859 / 4588 / 1447
Регистрация: 14.04.2014
Сообщений: 20,351
Записей в блоге: 20
30.06.2016, 11:24 14
сразу нет
или лучше так НЕЕЕЕЕЕЕТ....
не надо помогать так, как не надо делать
Access только для примитивных лабораторных работ. никакого предприятия
9 гридов на форме - тоже сразу нет
лучше объясните исходную задачу, вам помогут решить ее, а не задачу "как выстрелить себе в ногу, а то не достаю"

непосредственно по мотивам поста
представьте, что у вас 10000 поездов (товаров, заказов и т.п.) и вам нужно найти один
вы загружаете к себе в датасет 10000 записей и выбираете одну. понятно, что компьютеры сейчас дешевые, а мозги дорогие, но если кроме вас зайдет еще 50 сотрудников, то в сумме вы скачаете 500000 записей
и это ведь не единственная таблица БД, да?

единственная нормальная схема - запросить у сервера только нужные записи
0
1 / 1 / 0
Регистрация: 01.10.2015
Сообщений: 127
30.06.2016, 13:04  [ТС] 15
Ладно)
Тогда другой вопрос
Провожу поиск записей в DBgride по параметрам, которые я забиваю
Он останавливается на первой найденной и заносит в Memo, но суть в том, что по таким параметрам есть еще записи. Как продолжить поиск ?
0
Модератор
9459 / 6212 / 2420
Регистрация: 21.01.2014
Сообщений: 26,489
Записей в блоге: 3
30.06.2016, 13:25 16
1.
Цитата Сообщение от Alexartun Посмотреть сообщение
Провожу поиск записей в DBgride
Поиск записей ты проводишь не в DBGride, а в каком-то наборе данных, который DBGrid просто отображает...
2.
Цитата Сообщение от Alexartun Посмотреть сообщение
по таким параметрам есть еще записи. Как продолжить поиск ?
Использовать запрос и отображать в гриде сразу все найденные записи
0
5859 / 4588 / 1447
Регистрация: 14.04.2014
Сообщений: 20,351
Записей в блоге: 20
30.06.2016, 13:29 17
чтение документации не наш конек
как-то так?
http://docwiki.embarcadero.com... t.FindNext
0
30.06.2016, 13:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2016, 13:29
Помогаю со студенческими работами здесь

Обращение к однотипным компонентам в цикле
Пытаюсь всё красиво автоматизировать и сделать так что бы ComboBox*.ItemIndex (*= от 6 до 11)...

Обращение к динамически созданным компонентам
Доброго времени суток! Я новичок и только постигаю азы, прошу не ругаться. В данной процедуре я...

Обращение к компонентам
Здравствуйте, есть вопрос, скорее всего очень глупый но голову ломаю уже долго. У меня есть...

Обращение к компонентам из функции
В процессе работы на проектом решил переделать часть кода в функции и в обработчиках событий их...


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

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