Вниз
Скачать: CL | DM;

Один метод для разных типов передаваемых в него параметров   Найти похожие ветки 

 
alextov   (2004-04-20 14:21) [0]

Написал класс. Он выполняет определенные действия надDBGrid. Есть там свойство ActiveGrid :TDBGrid, которое собственно и определяет над каким DBGrid выполняются операции. C этим свойством работает с десяток методов.
Но я хочу чтоб также можно было работать при помощи этого класса не только с TDBGrid, но и с TDBGridEh. Большинство свойств у них одинаковые, но предки разные.
Можно было бы обьявить свойсто ActiveGrid как TCustomGrid (ближайший общий предок), но у него нет свойств columns, fieldname и тд, с которыми я работаю.
А переписывать каждый метод по два раза(код получается полностью идентичен), но с разным типом ActiveGrid - как-то некрасиво получается. Или перегружаемые методы использоватьили проверять (типа if ActiveGrid is TDBGrid then ... else...)  - тоже 2 раза один и тот же код переписывать.
Может многоуважаемый All подскажет что-то интересное...?


 
Anatoly Podgoretsky ©   (2004-04-20 14:28) [1]

Приведение типов.


 
Goida ©   (2004-04-20 14:30) [2]

Забей. Пиши два раза... Легче потом будет и тебе разбираться и тем, кто будет твой код разбирать.


 
Goida ©   (2004-04-20 14:32) [3]

Тебе в любом случае придется что-то проверять: или то, что ты сказал, или какой другой признак. А потом приводить, как сказал АП... Другого пути нет.


 
alextov   (2004-04-20 14:48) [4]

2 AP
Но мы же не можем привести TDBGrid к TDBGridEh и наоборот.
обьявляем
  ActiveGrid: TCustomGrid;
тогда
begin
   (ActiveGrid as TDBGrid).Columns....
//но если в ActiveGrid присвоили TDBGridEh - он же не приведется и будет ошибка.
Придется писать
   if ActiveGrid is TDBGrid then (ActiveGrid as TDBGrid).Columns....
   if ActiveGrid is TDBGridEh then (ActiveGrid as TDBGridEh).Columns....

И опять по два раза переписывать один итот же код.
Или я что то не так понял?

2 Goida
Заманчиво, заманчиво..., но душа хочет экибаны :))



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.067 c
3-1081331855
July
2004-04-07 13:57
2004.04.11
как узнать результирующий текст запроса с параметрами


3-1081458389
Igoryok
2004-04-09 01:06
2004.04.11
Как вызвать функцию из Access


3-1081923210
Balamut
2004-04-14 10:13
2004.04.11
Проблема блокировки таблиц в Delphi


1-1082637558
serg128
2004-04-22 16:39
2004.04.11
Как отловить событие в Excel?


14-1082107920
BOA_KAA
2004-04-16 13:32
2004.04.11
Иерархия компонентов




   Наверх