![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
один DBNavigator для нескольких таблиц БД [D5]
Azat © (2004-12-30 07:51:00)Уважаемые мастера. Можно ли использовать один DBNavigator для нескольких таблиц БД на одной форме и если можно то как? Я пробовал:
procedure TForm3.DBGrid3CellClick(Column: TColumn);
begin
DBNavigator1.DataSource:=DataModule2.pumpSource
end;
procedure TForm3.DBGrid4CellClick(Column: TColumn);
begin
DBNavigator1.DataSource:=DataModule2.paramSource
end;
но вторую таблицу не цепляет
msguns (2004-12-30 13:14:00) [1]Для централизации управления датасетами (гридами):
- MDIForm с панелью управления + MDIChild с датасетами и гридами
- ActionList в MDIForm с обработчиками
- Сообщения от Гл.формы активной при соотв.экшинах, которые объявляются и обрабатываются "дочками" либо интерфейс
Для "дочек" базовая форма с обработкой типовых событий (AfterScrool, BeforeInsert, ...) существенно упростит процесс разработки, особенно когда датасетов/гридов может быть много (например, справочники).
ИМХО, в большинстве случаев существенно удобнее как модальных форм, так и пэйджкотнролов, т.к. позволяют видеть одновременно несколько таблиц, формочки с которыми можно удобно расположить относительно друг друга при работе.
Sergey13 (2004-12-30 12:22:00) [2]2[8] Sergey_Masloff (30.12.04 12:05)
>А изначально у навигатора DataSource = nil
Так это до первого использования.
>все на любителя.
Кто бы спорил. 8-)
Sergey_Masloff (2004-12-30 12:05:00) [3]Sergey13 © (30.12.04 11:35) [4]
>Мне тоже не совсем нравится подход через OnEnter грида.
А зря. Потому что формы на которых данные десятка датасетов нужны вижу постоянно а форма с десятком навигаторов...
А если он ентер не будет то он ничего и не отредактирует потому что изменить что-то в контроле не войдя в него нельзя. А изначально у навигатора DataSource = nil
Ну честное слово - ОФИГЕННО удобно.
Более того, у себя я эти ссылки датасорсов передаю в дочерние формы что тоже часто удобно.
А вообще прав Rule © (30.12.04 11:57) [6] в том смысле что все на любителя.
Sergey13 (2004-12-30 11:59:00) [4]2[6] Rule © (30.12.04 11:57)
Это да, но если шибко хочется, то можно и съэкономить. 8-)
Rule (2004-12-30 11:57:00) [5]Sergey13 © (30.12.04 11:35) [4]
Например лежат на разных шитах пейджконтрола
ну тогда можно положить на каждый пейдж по навигатору, не так он много то и ресурсов ест ...
stud © (30.12.04 11:39) [5]
на любителя, я привык
stud (2004-12-30 11:39:00) [6]дык и смысл навигатора? для перемещения по гриду хватает и клавиш управления курсором - лишний элемент
Sergey13 (2004-12-30 11:35:00) [7]Мне тоже не совсем нравится подход через OnEnter грида. Узер может туда и не тыкаться, а сразу в нафигатор. Съэкономить на нафигаторе можно, если гриды гарантировано не показываются вместе. Например лежат на разных шитах пейджконтрола.
Rule (2004-12-30 11:27:00) [8]изврат какойто, а зачем это нада ?
DSKalugin (2004-12-30 11:14:00) [9]Обрабатывай событие DBGrid.OnEnter
procedure TForm3.DBGrid4Enter(Sender: TObject);
begin
DBNavigator1.DataSource:=DBGrid4.DataSource
end;
Sergey_Masloff (2004-12-30 08:37:00) [10]Я твой код не понимаю.
И что такое "не цепляет таблицу" тоже
Можно сделать что-то в этом роде:
На OnEnter DBAware контролов повесить обработчик примерно такого содержания:
........
var
PropInfo: PPropInfo;
........
PropInfo:= GetPropInfo(Sender.ClassInfo,'DataSource');
if Assigned(PropInfo) then
begin
YourNavigator.DataSource := TDataSource(GetOrdProp(Sender, PropInfo));
Будешь всегда редактировать что надо