Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];
ВнизTable Найти похожие ветки
← →
Alex8 (2008-04-12 13:11) [0]Уважаемые мастера!
Подскажите, пожалуйста, как
зная свойтво "Name" Таблицы (строка)
определить саму таблицу(указатель).
Что то вроде абсурдного (При pTb:TTable)
pTb := @pTb.Name
Пока что кроме прямолинейного просмотра
в цикле всех имеющихся в БД таблиц до встречи
с искомой ничего придумать не могу.
Спасибо.
← →
Сергей М, (2008-04-12 19:26) [1]И зачем же тебе понадобился этот указатель ?
← →
Loginov Dmitry © (2008-04-12 19:48) [2]Что-то не вяжется:
> Подскажите, пожалуйста, как
> зная свойтво "Name" Таблицы (строка)
> определить саму таблицу(указатель).
>
> Что то вроде абсурдного (При pTb:TTable)
> pTb := @pTb.Name
с этим:
> Пока что кроме прямолинейного просмотра
> в цикле всех имеющихся в БД таблиц до встречи
> с искомой ничего придумать не могу.
Определись, что тебе нужно и задай вопрос по-человечески!
← →
Alex8 (2008-04-12 20:49) [3]Попробую конкретизировать.
Пусть мне нужно в различных ситуациях
отфильтровать различные таблицы (pTb1, pTb2....pTbn)
Я могу написать например так:
If pTb1.Name = "Name_1"Then (pTb:=pTb1; f:=f1)
If pTb2.Name = "Name_2"Then pTb:=pTb2; f:=f2)
......................................
If pTb99.Name = "Name_99"Then (pTb:=pTb99; f:=f99)
pTb.Filtered := f;
Это конечно плохо.
А можно составить вспомогательный файл
pTb1 - "Name_1" - f1
pTb2 - "Name_2" - f2
......................................
pTb99- "Name_99"- f:=f99
Но pTb в файл не занесешь (я во всяком случае
не умею, т.к. это указатель). Поэтому в файле
остается 2 поля (Name и f).
А далее в конкретной ситуации я залезаю в этот
файл, вытаскиваю соответствующие Name и f,
по Name определяю (если мне подскажут, как это
сделать, и в программе пишу только
pTb.Filtered := f;
Ну вот примерно так. Простите, что длинно излагал.
← →
palva © (2008-04-12 20:54) [4]Если известно, на какой форме (или DataModule) таблица лежит, то можно поискать там. А искомая таблица вообще лежит на чем нибудь?
← →
Сергей М, (2008-04-12 21:01) [5]В пределах одного того же компонента-владельца компоненты, которыми он владеет непосредственно, разыскиваются по имени методом FindComponent(), после чего при необходимости можно использовать приведение типа.
пример:
TTable(FindComponent("MySuperPuperTableComponentName")).Filter("FilterOn"MySuper PuperTableComponentName"")
← →
Alex8 (2008-04-12 21:47) [6]Спасибо. Но пока что-то не получилось.
После
pTb := TTable(FindComponent("Tiz"));
ShowMessage(pTb1.Name);
ожидал плучить "Tiz", а получил (в окне Watch) Nil
Еще попробую разобраться детальней.
Может что-то напутал.
← →
Alex8 (2008-04-12 22:04) [7]В дополнение к предыдущему.
"Tiz" используется в моей форме, нр не является ее компонентом.
"Tiz" - компонент модуля данных.
Означает ли это, что в данном случае
FindComponent() не применим.
Может нужно завести процедуру в упомянутом
модуле данных
← →
Anatoly Podgoretsky © (2008-04-12 22:05) [8]> Alex8 (12.04.2008 21:47:06) [6]
Все нормально, в данном контейнере нет такого компонента.
← →
Сергей М, (2008-04-13 19:42) [9]
> Означает ли это, что в данном случае
> FindComponent() не применим
Нет, не означает.
Если компонент принадлежит контейнеру DataModule, то именно его метод FindComponent и следует вызывать, т.е. DataModule.FindComponent
Делать это можно в любом месте проекта, где виден идентификатор DataModule
← →
Leonid Troyanovsky © (2008-04-13 19:56) [10]
> Сергей М, (13.04.08 19:42) [9]
> Если компонент принадлежит контейнеру DataModule, то именно
> его метод FindComponent и следует вызывать, т.е. DataModule.
> FindComponent
>
> Делать это можно в любом месте проекта, где виден идентификатор
> DataModule
Виден в любом: Screen.DataModules.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c