Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
double inherited
|
|||
|---|---|---|---|
|
#18+
Здраствуйте Господа. Есть такой вопрос: у компонента наследника для вызова переопределенного метода предка можно использовать inherited. А вот как вызвать такой метод для дедушки этого компонента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 08:29 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
В Билдере можнонаписать так CDedushkaClass::Method(...); а в дельфи незнаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 08:47 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
2SerjaTo: идеологически неверный вопрос - хотите метод дедушки - наследуйте компонент от него ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 08:52 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
на самом деле всё банально: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. то бишь это сделать можно, хоть и неудобно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 15:01 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
и самое главное забыл: идеологически неверно так делать!!!! , потому и нет специальных ключевых слов для этого. Принципы ООП нарушаются, насколько я понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 15:04 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
>m_kus Не то! Так можно вызывать только конструктор и методы класса. А Задача такая: есть неплохой визуальный сторонний компонент. Он наследован от Tcustomgrid, в нем полностью переопределены MouseDown, KeyDown и т.д. И ведет он себя не так как хотелось. Надо чтобы управление было как в Tcustomgrid. Как можно в MouseDown, KeyDown вернуться к Tcustomgrid? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2003, 07:59 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
2Umak: Не понял, как это "не то"? Как был сформулирован вопрос, так я на него не ответил. Был вопрос, как вызвать метод дедушки, я написал. Про описанную тобой ситуацию нельзя ничего сказать, не взглянув на исходный код твоих "стороннего" компонента, да и не большой спец я... А между тем, всё зависит от того, как там это реализовано... Ты имеешь ввиду, переопределить события OnMouseDown, OnKeyDown? То есть сделать нечто подобное: Код: plaintext 1. 2. 3. 4. ? В таком случае можно попробовать таким образом: Код: plaintext 1. 2. 3. 4. но вряд ли получиться, да и не отменит (скорее всего) действие на MouseDown по умолчанию для "стороннего" компонента... Другой способ - наследоваться от компонента и переопределить метод MouseDown указанном выше (в предыдущем посте) способом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2003, 10:06 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
>m_kus Понял правильно, но такая реализация не годится. TCustomGrid.MouseDown(...) - MouseDown процедура не класса! TCustomGrid(MyGrid).MouseDown(Button, Shift, X, Y) - MouseDown из секции Protected - не найдется!(попробуйте код откомпилить) Если в этом модуле сначало TGrid=class(TCutomGrid); и TGrid(MyGrid).MouseDown(Button, Shift, X, Y); То MouseDown(Button, Shift, X, Y) вызовется от TmyGrid, ибо медот виртуальный и вызывать в оnMouseDown его нельзя - рекурсия, а в MouseDown();overide; - бесполезно! о задаче: В TmyGrid выделяется и редактируется FixedCols - если MouseDown вернуть к TcustomGrid - было бы как хотелось. Вопрос остаётся открытым! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2003, 06:21 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
о задаче: В TmyGrid выделяется и редактируется FixedCols - если MouseDown вернуть к TcustomGrid - было бы как хотелось. А там нет события OnSelectCell? Твою задачу можно решить если такое событие есть и написать обработчик следующим образом.: Код: plaintext 1. 2. 3. 4. 5. Если нет, и нет ничего подобного, то могу посоветовать последний способ: переопределить обработчик событий для всей формы, где при событии WMMouseDown, с помощью TCustomGrid.MouseCoord() проверять ячейку, которую пытается выбрать пользователь и в случае возможности её выбрать передавать событие гриду, в противном случае - не передавать, соответственно. С KeyDown будет посложней, но тоже можно извартиться... Но для этого уж придётся разобраться в механизме обработки событий... Другой способ (после последнего), заключается в написании своего компонента на основе данного (впрочем я уже это писал)... Кстати, у имеются исходники этого компонента? А из обработчика событий OnMouseDown отменить действие TMyGrid.MouseDown, так как скорее всего оно уже выполнилось... Разве что попробовать вызвать исключение: Код: plaintext 1. 2. 3. 4. а исключение давить например в Application.OnException... :-) но я сомневаюсь, что это будет работать как надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2003, 09:28 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
Обязательно зайди www.delphimaster.ru/cgi-bin/forum.pl?look=1&id=1056509080&n=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2003, 06:52 |
|
||
|
double inherited
|
|||
|---|---|---|---|
|
#18+
НУ И ЧТО? Работает? Что они тебе посоветовали? То же что и я - наследоваться, то есть написать свой TMyGrid... А в таком случае всё просто... И ты хочешь сказать, что такой код не работает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. а который reonid посоветовал, работает? Или ты всё-таки из обработчика событий формы вызываешь и работает? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Хорошо, если так работает и нет глюков, признаю, не знал, что такое возможно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2003, 09:02 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32188747&tid=2117885]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 421ms |

| 0 / 0 |
