Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Общий тип для манипуляции несовместимыми типами с общими свойств. [D7, XP, 2003]


Страницы:   1 2 3

Дмитрий ©   (2014-03-05 17:40:00) 

Хочу сделать универсальный объект, который позволили бы единобразно обращаться к некоторым общим свойствам гридов разных типов.
В частности в проекте встречаются  одновременно DBGrid, RxDBGrid, DBGridEh.
Для реализации нужной функциональности сетки нужно обращаться к свойствам DataSource, OnFilter... и т.д., которые имеются у всех этих типов.
Возможно ли сделать объект или приведение типа, чтобы можно было привязывать любой тип сетки
вроде UniGrid.DataSource:=...


Юрий Зотов   (2014-04-16 12:13:00) [1]

> Отсутствует желаемое решение.

Его я и имел в виду. И в полноценном виде его действительно не существует (о чем здесь уже говорилось) - слишком разные компоненты.


Дмитрий   (2014-04-15 17:22:00) [2]


> Германн ©   (15.04.14 02:27) [49]
> А к своему тёзке, автору EhLib не обращался?

Нет.
То, что нужно было от ЕхГрида обходился поиском по форумам.
А спросить про универсальный коннектор не достает наглости.
Кроме меня никому не нужно.


> Юрий Зотов ©   (14.04.14 22:51) [48]
> решения так и нет. Не значит ли это, что его действительно
> просто нет?

Так-то решение есть - прописать каждое свойство ручками.
Чем потихоньку и занимаюсь, в фоновом режиме.
Отсутствует желаемое решение.
С мороженками и печеньками.
)


Германн   (2014-04-15 02:27:00) [3]


> Дмитрий   (14.04.14 18:53) [47]
>
> К слову, мне не обязательно требуется реализация здесь и
> сейчас всех свойств ДжедайГрида и прочих.
> Скорее, мне нужна болванка, которая сейчас позволяет крутить
> ГридЕх, в которую при потребности легко добавить прочие
> типы.

А к своему тёзке, автору EhLib не обращался?


Юрий Зотов   (2014-04-14 22:51:00) [4]

> Дмитрий   (14.04.14 18:53) [47]

Прошло больше месяца, а решения так и нет. Не значит ли это, что его действительно просто нет?


Дмитрий   (2014-04-14 18:53:00) [5]

К слову, мне не обязательно требуется реализация здесь и сейчас всех свойств ДжедайГрида и прочих.
Скорее, мне нужна болванка, которая сейчас позволяет крутить ГридЕх, в которую при потребности легко добавить прочие типы.


sniknik   (2014-03-27 11:50:00) [6]

> Принципиального улучшения
я не про разницу кода 13 vs 41, а в принципе "за идею"... любая "универсализация" чего-то настолько различного приведет к проблемам.

как пример могу привести уже набивший оскомину ADOTable, ADOQuery "универсализировавший" логику работы с ними "под BDE".
где уже этот BDE, а проблемы из-за подобного решения до сих пор есть.


Дмитрий   (2014-03-26 18:29:00) [7]

Inovet ©   (26.03.14 17:27) [43]
Переписал из инспектора используемые свойства ЕхГрида.
Некоторые свойства, вроде SelectedField так не помню, всплывают в процессе переделки прежнего модуля.

sniknik ©   (26.03.14 18:07) [44]
Принципиального улучшения [41] не несет по сравнению с [13], кроме группировки в одном блоке.
Во многих случаях потребуется еще одно приведение типов.
Дополнительная операция может быть заметна в обаботчиках типа OnCalc или OnDrawCell


sniknik   (2014-03-26 18:07:00) [8]

> Возможно, с точки зрения структуры и правок это будет удобно.
гарантирую, это будет жутко неудобно и глючно.

сам представь, все что ты делаешь в 1 строку будешь делать в 50 ради абстрактной универсализации. да эти 50 строк, вместо одной у тебя будут "спрятаны" в объекте но зависимости в работе с ним, "внешние", останутся. и необходимость правки именно самого кода обеспечивающего "универсальность" тоже (по умолчанию, сделает кто-то новый грид и как же универсальность если его не поддержать?).


Inovet   (2014-03-26 17:27:00) [9]

> [42] Дмитрий   (26.03.14 17:20)

Какой в этом смысл, если они разные и наборы их разные? При том, что часть из перечисленного вообще-то не этими гридамиопределена и общая для всех, и доступна нормальными способами.


Дмитрий   (2014-03-26 17:20:00) [10]

В большей степени мне нужны поля и свойства грида.
Align, color, columns, datasource, Drawmemotext, EditActions, Enabled, EvenRowColor, FixedColor, Flat, FrozenCols, Height, Hint, Left, Name, OddRowColor, Options, ReadOnly, Tag, Visible, Width
Еще некоторые другие типа Owner-Parent и некоторые обработчики OnKeyPressed-OnDrawColumnCell

У датасетов облегчает ситуацию наличие общего совместимого типа, у гридов такого нет.

> clickmaker ©   (26.03.14 10:45) [41]
> function TGridHelper.GetProp(AGrid: TComponent; const APropName:
>  string): TObject;
> begin...

Мысль понятна-объединить в один метод.
Возможно, с точки зрения структуры и правок это будет удобно.


clickmaker   (2014-03-26 10:45:00) [11]

function TGridHelper.GetProp(AGrid: TComponent; const APropName: string): TObject;
begin
 if (APropName = "DataSource") then begin
   if (AGrid is TDBGridEh) then  
     result:=(AGrid as TDBGridEh).DataSource;
   else if (AGrid is TDBGrid) then  
    result:=(AGrid as TDBGrid).DataSource;
   if (AGrid is TRxDBGrid) then    
    result:=(AGrid as TRxDBGrid).DataSource;
 end else
 if (APropName = "SelectedField") then begin
   if (AGrid is TDBGridEh) then  
     result:=(AGrid as TDBGridEh).SelectedField;
   ...
 end else
 if...
end;


Inovet   (2014-03-25 17:06:00) [12]

> [39] Дмитрий   (25.03.14 17:01)

Тебе Датасет надо или остальные поля и свойства? Какие тогда остальные?


Дмитрий   (2014-03-25 17:01:00) [13]

Остальные требуемые поля и свойства этот же метод будет получать?
)


clickmaker   (2014-03-24 19:50:00) [14]

[13]


Дмитрий   (2014-03-24 19:47:00) [15]

Что будет делать это метод?


clickmaker   (2014-03-24 18:02:00) [16]

> добавки делать во все процедуры

зачем во все? недостаточно одного статического метода-хелпера?


Дмитрий   (2014-03-24 17:57:00) [17]


> KSergey ©   (24.03.14 11:08) [34]
> По-моему отличный и довольно производительный вариант.

Вариант отличный, главное, рабочий.
И пока единственный.
Удручает один момент: для пристежки Джедайского Грида добавки делать во все процедуры.


KSergey   (2014-03-24 11:08:00) [18]

> Дмитрий   (06.03.14 15:19) [13]

По-моему отличный и довольно производительный вариант.
Написал один раз - и забыл, т.е. занялся чем-то более полезным, чем "наведение красоты". Которое завсегда совершенно бестолковое.


clickmaker   (2014-03-23 22:04:00) [19]

> прослойка между гридом и датасетом

published-свойства типа DataSource, которые у всех гридов есть, можно через RTTI получить.
А под специфичные св-ва типа SelectedField все равно придется код напильником затачивать


Германн   (2014-03-22 03:27:00) [20]

Дмитрий   (21.03.14 17:41) [31]

Странный вопрос.
Можно и левое ухо правой рукой чесать.
Но мы же не обязаны пользоваться этой возможностью.

Мы не обязаны. А кто тебя заставил?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо