![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,544
|
![]()
tgridclass(caller) := tgridclass(sender);
а не проще ли var celler: TCustomGrid; caller:=sender as TcustomGrid;
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#12 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
![]()
Вот если бы было немного понятнее, что конкретно надо, а то все как-то абстрактно...Но все же, возможно ТСу стоит посмотреть на паттерны проектирования (наверное порождающие паттерны, хотя точно не скажу, ибо не до конца понял что требуется) - скорее всего найдет он там что-то нужное...
Будь проще и люди к тебе потянутся
|
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> сам не верю
вы не поверите.. но все эти классы унаследованы от TCustomGrid. Т.е. ваш код работает не потому, что вы поменяли класс у переменной, а потому, что создатели ООП лет за 30 до этого уже всё придумали.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,544
|
![]()
Его вопрос (как мне кажется)
Не переписывать процедуры (в т.ч. обработчики событий) работающие с таблицей при замене самой таблицы Tstringgrid <-> TdrawGrid. Решение к какому он пришел и сам Использовать приведение Tobject к общему предку. TcustomDrawGrid либо sender as Tstringgrid либо sender as TDrawGrid Всегда sender as TcustomDrawGrid
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#15 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
давайте я напишу вам код как было и как стало, не буду говорить , что именно такой код нужен к работе, но как пример
было Код:
Код:
Кто искушен, уточните, пожалуйста, безопасен ли такой способ ? УПД. veniside, согласен с Вами, но мне интересен сам принцип вообще, вдруг я буду писать свою какую-то иерархию без определенных принципов наследования, и мне понадобится такой финт согласен с evg_m желательно в таких ситуациях искать общего предка, я обычно так и делал, но, думаю когда-то может быть необходимым прямо так, например когда у предка не опредлено некое свойство, а у потомков обоих есть Последний раз редактировалось phomm; 07.04.2011 в 20:43. |
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
В первом варианте tStringgrid одни раз везде меняется на TCustomGrid и всё.
Я всё больше сомневаюсь, что вы понимаете, в чём заключается ООП.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,544
|
![]() Код:
Код:
((sender as TcustomGrid) as TCustomDrawGrid) as TstringGrid ((sender as TcustomGrid) as TCustomDrawGrid) as TDrawGrid ((sender as TcustomGrid) as TCustomDrawGrid) as TDrawGrid
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 07.04.2011 в 20:51. |
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 06.12.2010
Сообщений: 300
|
![]()
Я бы остановился на варианте (sender as TDrawGrid). Учитывая иерархию классов, он самый правильный. А прямое приведение типов не есть гуд. В данном случае работает, а к примеру с кнопками можно запросто схватить AV.
|
![]() |
![]() |
![]() |
#19 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Мне кажется меня мало поняли, или я сам маленько вас запутал, или в процессе дискуссия отклонилась.
Мне надо чтобы некий сендер (мы задаем его и точно знаем какого он типа) автоматически преобразовывался к переменной-контейнеру caller'y этого же типа, я не хочу всегда заботиться о типе к которому привожу, зачем мне это ? ведь я присваиваю результат переменной этого же типа ! и я хочу чтобы он(результат преобразования сендера) производился автоматически, независимо от типа caller'a. Вы посмотрите сами, я не привожу разные объекты к некоему другому, я привожу один и тот же тип к нему же самому, просто я хочу чтобы это делалось автоматом, чисто на основании знания о типе caller'a поясняю ещё )) я завожу тип, для вышеназванных примеров это Tgridclass = class of Tdrawgrid; и завожу caller тоже класса Tdrawgrid , и во всех обработчиках событий этого грида я хочу, чтобы обращение шло через caller (в будущем план, что caller - поле формы, и можно работать с ним через некие методы), и чтобы оно шло, мне надо кастануть переданный в обработчик события sender (который по факту будет Tdrawgrid, но для компилятора на этапе компиляции он всего лишь Tobject , поэтому-то и нужна кастовка), и мне надо делать это автоматом, без заботы о конкретике, ведь конкретика и так уже прописана при объявлении caller'a , и вот знания о типе caller'a я и хочу использовать для такой автоматики. блин, я знаю что я тяжело/малопонятно пишу ) но тут всё просто мне кажется, я хочу приводить объект к своему собственному типу , причем уже на этапе компиляции, и конечно, автоматически , ни о каких АВ полагаю и речи быть не может, а заниматься уточнением предков для классов менее удобно , вот и все предпосылки |
![]() |
![]() |
![]() |
#20 |
Форумчанин
Регистрация: 06.12.2010
Сообщений: 300
|
![]()
На прошлой странице я уже писал, повторю еще раз идею:
Код:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов | Lanx | Помощь студентам | 0 | 06.04.2011 20:24 |
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? | Farrel | Общие вопросы C/C++ | 2 | 13.11.2010 17:37 |
Создание класса с полем типа TStringList. Ошибка при его заполнении | Son | Общие вопросы Delphi | 8 | 13.04.2010 21:38 |
Параметр конструктора класса = объект этого класса | nazavrik | Общие вопросы C/C++ | 6 | 14.02.2010 13:48 |
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? | TwiX | Общие вопросы Delphi | 3 | 15.11.2009 00:54 |