![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как реализовать PageControl с БД
igor_w © (2005-01-25 10:25:00)Я ставлю на каждую страницы PageControl отдельную базу, при просмотре базы её как-бы не видно, щелкаем правой кнопкой мыши база появляется. Как сделать чтобы она запускалась сразу при переходе на другую страницу?
igor_w (2005-01-28 15:45:00) [1]Спасибо всем! Розобрался.
Жук (2005-01-25 13:24:00) [2]
> msguns © (25.01.05 13:15) [5]
"Тебе бы, Серёга, книжки писАть" (почти(с))
msguns (2005-01-25 13:15:00) [3]Во-первых, надо как-то все ж таки определиться: что такое "база" и что такое "открываться".
Если БД одна (рискну предположить, что это локалка типа парадокс или дибэйз), т.е. каталог для всх "баз" один и тот же, то под словом "база" имеется в виду таблица или запрос. В этом случае БД всего одна, а таблиц (запросов) может быть много и некоторые из них мы желаем отображать в гридах, помещенных в пэйджконтролы.
Если так, то открывать БД нужно только один раз,- обычно в начале работы приложения (можно в событии OnShow главной формы), а все компоненты, с помощью которых мы будем отображать таблицы (в миру датасеты) "отошлем" к единому TDataBase.
Итак, у нас есть 2 способа "открытия" датасетов:
1. Ламерский и ресурсоемкий: При открытии БД (см. выше) тут же открываем и все датасеты. В этом случае мы пюлюем на всякие там события и вообще программинг, т.к. при листании страниц видим уже открытые датасеты в гридах
2. Продвинутый и экономный: Все НД вообще-то закрыты и не гребут ресурсы. Но мы вынуждены воспользоваться событиями пэйджконтрола, а именно теми из них, которые возникают при переходе с одной страницы на другую (см.хэлп). Дальше ясно: НД, отображаемый в теряющей фокус странице закрываем, получающей - открываем. Во избежание потери при переоткрытии НД текущей записи пользуемся закладками. Но надо кодить.
Есть, конечно, еще другие способы, например, отображение любой таблицы через отдельную дочернюю форму, полученную из написанного базового класса и имеющую минимум кода. Этот способ позволяет просматривать несколько НД (таблиц - для ламера) одновременно, причем узер может расположить окошки на экране как ему удобно, например, для сравнения и легко перемещать курсор между этими таблицами. А если еще написать универсальную панель управления, с помощью которой можно редактить любую из отображаемый "дочками" таблицу, то... Но это уже не годится, видимо, т.к. требует не только знания основ БД, но и понимания ООП. Что, видимо, в данном случае, отсутствует напрочь.
Плохиш (2005-01-25 12:25:00) [4]
>igor_w (25.01.05 12:22) [3]
Хм, тут знаешь ли код писать в программе надо.
igor_w (2005-01-25 12:22:00) [5]Да не в космос. Просто нужно чтобы при запуске программы сразу бы открывалась БД, затем, при переходе на другой лист PageControl
открывалась другая БД и т.д. А получается, запускаем программу и
вместо данных в базе пустое поле, щелкаем правой кнопкой мыши данные появляются. Нужно чтобы не щелкать мышкой.
msguns (2005-01-25 11:00:00) [6]А куда запускаются базы-то ? В космос ?
Sergey13 (2005-01-25 10:38:00) [7]Написать соответствующий обработчик. И, видимо, разобраться с терминологией (база<>таблица).