Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.034 c
7-1080287700
Ghost
2004-03-26 10:55
2004.05.09
Система


14-1082201835
VMcL
2004-04-17 15:37
2004.05.09
Расшифровки ^)


3-1081669851
ppcat
2004-04-11 11:50
2004.05.09
Проект, базы данных


1-1082717242
афвуд
2004-04-23 14:47
2004.05.09
Как установить дробный разделитель для чисел в своей проге?


6-1078846498
Chlavik
2004-03-09 18:34
2004.05.09
GetIfTable и текущее подключение к инету...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский