![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
![]() |
![]() |
![]() |
#12 | ||||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Если аналогичная функциональность нужна в моём компоненте - я просто воспользуюсь агрегацией (композицией). Цитата:
Цитата:
Код:
Цитата:
Наводящий вопрос: вот мне надо использовать два компонента в проекте. Один использует модифицированную вами VCL. Второй компонент - модифицированную VCL дяди Васи. И что теперь? Расширение компонентов делать надо по правилам ООП - наследованием, агрегацией.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||||
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
"И что теперь?"
Наводящий ответ: пишите на asm =) а если серьезно, то у вас пока нет модифицированной нами VCL, так что вам не о чем беспокоиться. "Такой компонент уже есть" ага! в делфи как я посмотрю вообще много чего "уже есть"... вот только по моему опыту проще сделать свое, чем копаться в чужом, особенно если оно работает через-back. кстати как оно работает? глянул тут что такое TApplicationEvents (оказывается он у меня есть о_О)... в нем есть OnMessage, ну и что? создавать его для каждого своего компонента? хотяя, если это будет работать, и будет хорошим тоном, то может это и заменит модификацию TApplication. но если и так, то я хоть поизвращался немного... удовлетворил естественные потребности так сказать. "Сначала строим себе заборы" GunSmoker, в точку! =) всей этой хренью я страдаю из спортивного интереса! считайте что у меня хобби такое - изобретать велосипеды. "Откройте для себя Anchors" якоря мне не помогут =( как мы уже знаем, мне немножко не по себе при использовании стандартных компонентов, особенно если я не знаю как они работают. "Чего бы не поставить нормальную версию со всеми компонентами?" нет возможности сворачивать код процедуры/функции. как без этого можно работать я не представляю... Последний раз редактировалось xrob; 16.09.2011 в 04:55. |
![]() |
![]() |
![]() |
#14 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Если очень уж нужно влезть в логику работы компонента без создания нового, можно заюзать класс-перехватчик (interceptor class), хотя по сути это "наследование самого себя"
![]() Код:
Код:
пыщь
|
![]() |
![]() |
![]() |
#15 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
"TButton = class(StdCtrls.TButton)"
ого, не знал что так можно делать =) "сорцы открыты" Пепел Феникса, я уж говорил - проще написать свое, чем ковырять чье-то. и очень интересно узнать как это можно больше двух процедур цепочку сделать. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
там получается по типу списка идет.
по такому же принципу кстати и в ссылке, и там без разницы сколько и чего применит этот метод. принцип такой, изначально был обработчик у Forn1 от TForm 1)далее TRCButton заменяет его своим, запоминая старый. имеем Form1-(использует)>TRCButton, RCButton1-(помнит)>TForm при сообщении выходит так TRCButton->TForm 2)далее TCoolTrayIcon(к примеру) заменяет текущий обработчик Form1 своим, запоминая старый. имеем Form1-(юзает)>TCoolTrayIcon, CoolTrayIcon1-(помнит)>TRCButton, RCButton1-(помнит)>TForm при сообщении выходит так: TCoolTrayIcon->TRCButton->TForm. и тд. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 | Elvisnya | Общие вопросы Delphi | 3 | 28.04.2011 15:59 |
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 | 666dart666 | Помощь студентам | 11 | 04.11.2010 17:57 |
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism | savva-paladin | Софт | 18 | 02.10.2010 20:24 |
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? | redred | Общие вопросы Delphi | 10 | 11.12.2007 10:43 |
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? | dagarik | БД в Delphi | 7 | 22.10.2007 17:54 |