Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизОдин метод для разных типов передаваемых в него параметров Найти похожие ветки
← →
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 подскажет что-то интересное...?
← →
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]Приведение типов.
← →
Anatoly Podgoretsky © (2004-04-20 14:28) [1]Приведение типов.
← →
Goida © (2004-04-20 14:30) [2]Забей. Пиши два раза... Легче потом будет и тебе разбираться и тем, кто будет твой код разбирать.
← →
Goida © (2004-04-20 14:30) [2]Забей. Пиши два раза... Легче потом будет и тебе разбираться и тем, кто будет твой код разбирать.
← →
Goida © (2004-04-20 14:32) [3]Тебе в любом случае придется что-то проверять: или то, что ты сказал, или какой другой признак. А потом приводить, как сказал АП... Другого пути нет.
← →
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
Заманчиво, заманчиво..., но душа хочет экибаны :))
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.032 c