Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.05;
Скачать: CL | DM;

Вниз

Чем можно заменить   Найти похожие ветки 

 
NAlexey ©   (2003-05-27 10:21) [0]

Например мне надо проверить:

if Control is TCustomGrid then
...

Но не хочется включать в Uses-Grids. Чем можно заменить такую конструкцию?


 
VMcL ©   (2003-05-27 10:23) [1]

>NAlexey © (27.05.03 10:21)

Ничем.


 
Skier ©   (2003-05-27 10:27) [2]

>NAlexey
TObject.ClassNameIs(...)


 
VMcL ©   (2003-05-27 10:33) [3]

>Skier © (27.05.03 10:27)

ClassNameIs performs much the same function as the is operator, except that it requires an exact match, returning False for descendants of the named class.


 
NAlexey ©   (2003-05-27 10:34) [4]

>TObject.ClassNameIs(...)
А если наследник? Может там что с RTTI помудрить?


 
Skier ©   (2003-05-27 10:37) [5]

>NAlexey © (27.05.03 10:34)

> Может там что с RTTI помудрить?

Помудри...


 
rounin   (2003-05-27 10:40) [6]

Можно пройтись по всем предкам с помощью
ClassNameIs + ClassParent

Можно передать в модуль указатель на TCustomGrid:

var
_TCustomGrid: TClass;

// где-то в другом модуле {YourUnit.}_TCustomGrid := TCustomGrid;

if Control.InheritsFrom(_TCustomGrid) then...


 
Skier ©   (2003-05-27 10:41) [7]

>rounin (27.05.03 10:40)

А как с этим быть ? :)


> Но не хочется включать в Uses-Grids.



 
Digitman ©   (2003-05-27 10:42) [8]

Раз ты предполагаешь, что среди контролов м.б. грид, это означает, что где-то в uses-секциях прочих модулей уже фигурирует модуль Grids.
И какая разница, укажешь ты в этом модуле Grids или не укажешь ? Ни на что это уже не влияет - коль грид где-то фигурирует, модуль уже используется, и лишняя ссылка на него в данном модуле никаких доп.ресурсов не потребует (если речь идет, насколько это очевидно из вопроса, о якобы нежелательности задействовать неиспользуемые "по полной программе" ресурсы модуля)

Другой вопрос, что сторока с IS-проверкой типа м.б. в хост-приложении, в то время как проверяемый контрол - в DLL. Но в таком случае достаточно собрать и хост-приложение и DLL c опцией build with run-time package, и код модуля grids будет загружен и использован один и тот же (т.е. существовать он будет в единственном экз-ре в вирт.адр.пространстве процесса)


 
NAlexey ©   (2003-05-27 10:50) [9]

>Digitman ©
Наверное ты прав, хотя RTTI помогла.


 
Palladin ©   (2003-05-27 10:51) [10]

мда, странные задумки... какой смысл отказыватся от grids...


 
Digitman ©   (2003-05-27 10:57) [11]


> хотя RTTI помогла


... и помогла именно потому, что информация об интересующем тебя классе появилась в ней в результате компиляции при явно фигурировавшем где-то в uses модуле Grids



Страницы: 1 вся ветка

Текущий архив: 2003.06.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-13253
Gremlin
2003-05-15 09:17
2003.06.05
Еще раз об Exсel e


1-13315
Вопрошающий
2003-05-25 11:31
2003.06.05
Повторяющиеся символы


14-13425
Дремучий
2003-05-15 19:13
2003.06.05
Если знаешь украинский - приколись!


4-13506
Дмитрий К.К.
2003-04-07 15:38
2003.06.05
Чужой комбобокс


3-13074
YuraKiller
2003-05-17 00:42
2003.06.05
Как перейти с InterBase на FireBird