|
|
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Заранее извиняюсь если выражаюсь технически некорретно. Есть юзерский обьект - кнопка. Есть некоторый код в событии clicked. Мы помещаем(наследуем) эту кнопку в некоторое окно (окна). Теперь мне нужно, что бы при нажатии кнопки сработал кусок кода который написан в событии потомка, затем чтобы исполнился код предка, а потом оставшийся код потомка. Как это можно сделать. Смысл в том, что эта кнопка используэтся в разных окнах. По нажатию мы собираем доступные данные в зависимости от того, в каком окне и даже на какой строке датавиноу находимся (в коде наследника). Потом открываем некоторое окно с параметрами, и потом получаем от него эти параметры(в коде предка), затем в коде потомка передаем эти параметры в нужные нам переменные (в коде наследника). Мдее. Запутанно. Ногами не бейте, печатала в транслите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 08:28 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Ой сообразила уже. Извиняюсь за беспокойство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 08:51 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
tea-pot forgot passwordТеперь мне нужно, что бы при нажатии кнопки сработал кусок кода который написан в событии потомка, затем чтобы исполнился код предка, а потом оставшийся код потомка. Как это можно сделать. Этого не только делать, об этом даже думать нельзя. Предки не должны НИЧЕГО знать о потомках :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 08:53 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
В предке создаем пустое событые "пред-вызов clicked" в событии "clicked" его вызываем. Соответственно в наследнике в "пред-вызов clicked" пишем нужный код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 12:08 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Алексей Л.В предке создаем пустое событые "пред-вызов clicked" в событии "clicked" его вызываем. Соответственно в наследнике в "пред-вызов clicked" пишем нужный кодВообще-то PowerScript это объектный язык. Использовать механизм колбеков на нем не рекомендуется. Можно, но не нужно. А задача решается элементарно. В коде кнопки наследника на событии Clicked() пишется простой код: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 18:57 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
White OwlА задача решается элементарно. В коде кнопки наследника на событии Clicked() пишется простой код: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 19:13 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
White OwlВообще-то PowerScript это объектный язык. Использовать механизм колбеков на нем не рекомендуется. Можно, но не нужно. Позвольте с вами не согласиться (насчет ненужно). Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и pfc_PostOpen ) Фактически предложенный мной вариант означает не колбек, а видоизменение "юзерского обьекта - кнопки" - теперь этот обьект будет иметь 2 события доступных для потомков - предобработка и постобработка события clicked . А с вариантом Super::EVENT Clicked() ИМХО могут в дальнейшем возникнуть сложности при дальнейшей правке кода. (в моей практике такие случаи были неоднократно ) кстати, мнение Ursego Только не забыть убрать птичку с Extend Ancestor Script это подтверждает - представьте, что в наследнике от наследника нужно что-то изменить в предобработке : возникают сложности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 12:21 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Алексей Л.Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и pfc_PostOpen )Вот-вот... там (в PFC) такой фигни навалом. С месяц тому назад я уже говорил тут на форуме о кривизне PFC и о том что не стоит подражать использованым там приемам. Как раз из-за грубого нарушения принципов объектного дизайна. Алексей Л.Фактически предложенный мной вариант означает не колбек, а видоизменение "юзерского обьекта - кнопки" - теперь этот обьект будет иметь 2 события доступных для потомков - предобработка и постобработка события clicked .Это и есть колбеки :) Но как и для любого колбека, их создание и поддержание требует чтобы их предусмотрели на этапе создания базового класса. Если два года назад, когда создавался класс базовой кнопки ты не предусмотрел в нем функции Pre_click/Post_click то сегодня, когда тебе понадобился такой финт - тебе прийдется лезть и править базовый класс. Чем любители PFC частенько и грешат :( Алексей Л.кстати, мнение Ursego Только не забыть убрать птичку с Extend Ancestor ScriptЭто не мнение, это напоминание :) И кстати, я всегда говорил что эта птичка одно из самых дурацких изобретений PB. От нее больше вреда чем пользы, но увы она уже есть... Убил бы того идиота который ее придумал... Алексей Л. - представьте, что в наследнике от наследника нужно что-то изменить в предобработке : возникают сложностиНикаких сложностей. Если так сильно нужно унаследовать от наследника... То код Clicked во внуке будет выглядеть так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 19:46 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Всегда можно вызвать конкретного предка по имени (вместо super). А уж если и это не помогает, то это уже красная лампочка зажглась - что-то не так в дизайне. Не должно быть таких сложностей если правильно спроектировано. Я не для подкола пишу - это правило прежде всего для меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 19:47 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Это был ответ Алексею. Что за идиотский форум, нельзя редактировать свои сообщения! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 19:49 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
White Owl Алексей Л.Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и pfc_PostOpen )Вот-вот... там (в PFC) такой фигни навалом. С месяц тому назад я уже говорил тут на форуме о кривизне PFC и о том что не стоит подражать использованым там приемам. Как раз из-за грубого нарушения принципов объектного дизайна. Бред. Какой именно из принципов нарушается? Этот метод и есть самый правильный. Java работает именно так. С использованием "колбеков" (так называемых). Уж более обьектно ориентированного языка я не видел. И я считаю что PFC очень правильно организован для того чтобы внедриться в любой уровень иерархии наследования обьектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 20:05 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Dmitry.И я считаю что PFC очень правильно организован для того чтобы внедриться в любой уровень иерархии наследования обьектов.Вот-вот... именно что внедрится , не унаследовать а внедрится... Вот когда вы начнете жить с PFC наследуя от нее а не внедряясь в нее тогда прийдете еще раз рассказывать какая это хорошая объектно ориентированая библиотека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 20:19 |
|
||
|
Яйцо-курица-яйцо
|
|||
|---|---|---|---|
|
#18+
Г-н White Owl нам тут уже ранее наглядно продемонстрировал абсолютное непонимание PFC, так что можно смело игнорировать :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 20:38 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33868297&tid=1337681]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 365ms |

| 0 / 0 |
