Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.032 c
1-1082487555
spogi
2004-04-20 22:59
2004.04.11
Shell_TrayWND in WinXP


14-1081732593
TButton
2004-04-12 05:16
2004.04.11
Стартовая Страница


1-1082733355
crezo
2004-04-23 19:15
2004.04.11
chm


6-1078993652
Yandex
2004-03-11 11:27
2004.04.11
Чём корректно завершить idFTP !!!!


14-1082021325
Stas
2004-04-15 13:28
2004.04.11
QNX система работающая в реальном времени