Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Яйцо-курица-яйцо / 14 сообщений из 14, страница 1 из 1
19.07.2006, 08:28
    #33862690
Яйцо-курица-яйцо
Заранее извиняюсь если выражаюсь технически некорретно.

Есть юзерский обьект - кнопка. Есть некоторый код в событии clicked.

Мы помещаем(наследуем) эту кнопку в некоторое окно (окна).

Теперь мне нужно, что бы при нажатии кнопки сработал кусок кода который написан в событии потомка, затем чтобы исполнился код предка, а потом оставшийся код потомка. Как это можно сделать.


Смысл в том, что эта кнопка используэтся в разных окнах. По нажатию мы собираем доступные данные в зависимости от того, в каком окне и даже на какой строке датавиноу находимся (в коде наследника). Потом открываем некоторое окно с параметрами, и потом получаем от него эти параметры(в коде предка), затем в коде потомка передаем эти параметры в нужные нам переменные (в коде наследника). Мдее. Запутанно.

Ногами не бейте, печатала в транслите.
...
Рейтинг: 0 / 0
19.07.2006, 08:51
    #33862726
Яйцо-курица-яйцо
Ой сообразила уже.
Извиняюсь за беспокойство.
...
Рейтинг: 0 / 0
19.07.2006, 08:53
    #33862727
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
tea-pot forgot passwordТеперь мне нужно, что бы при нажатии кнопки сработал кусок кода который написан в событии потомка, затем чтобы исполнился код предка, а потом оставшийся код потомка. Как это можно сделать.
Этого не только делать, об этом даже думать нельзя. Предки не должны НИЧЕГО знать о потомках :-)
...
Рейтинг: 0 / 0
19.07.2006, 12:08
    #33863355
Алексей Л.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
В предке создаем пустое событые "пред-вызов clicked"
в событии "clicked" его вызываем.
Соответственно в наследнике в "пред-вызов clicked" пишем нужный код
...
Рейтинг: 0 / 0
19.07.2006, 18:57
    #33865172
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
Алексей Л.В предке создаем пустое событые "пред-вызов clicked"
в событии "clicked" его вызываем.
Соответственно в наследнике в "пред-вызов clicked" пишем нужный кодВообще-то PowerScript это объектный язык. Использовать механизм колбеков на нем не рекомендуется. Можно, но не нужно.

А задача решается элементарно. В коде кнопки наследника на событии Clicked() пишется простой код:
Код: plaintext
1.
2.
// команды которые должны выполнится до Clicked родителя
Super::EVENT Clicked()
// команды которые должны выполнится после Clicked родителя
...
Рейтинг: 0 / 0
19.07.2006, 19:13
    #33865205
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
White OwlА задача решается элементарно. В коде кнопки наследника на событии Clicked() пишется простой код:
Код: plaintext
1.
2.
// команды которые должны выполнится до Clicked родителя
Super::EVENT Clicked()
// команды которые должны выполнится после Clicked родителя
Только не забыть убрать птичку с Extend Ancestor Script
...
Рейтинг: 0 / 0
20.07.2006, 12:21
    #33866543
Алексей Л.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
White OwlВообще-то PowerScript это объектный язык. Использовать механизм колбеков на нем не рекомендуется. Можно, но не нужно.

Позвольте с вами не согласиться (насчет ненужно).
Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и
pfc_PostOpen )
Фактически предложенный мной вариант означает не колбек, а
видоизменение "юзерского обьекта - кнопки" - теперь этот обьект
будет иметь 2 события доступных для потомков - предобработка и постобработка события clicked .
А с вариантом Super::EVENT Clicked() ИМХО могут в дальнейшем возникнуть сложности при дальнейшей правке кода. (в моей практике такие случаи были неоднократно )
кстати, мнение Ursego Только не забыть убрать птичку с Extend Ancestor Script это подтверждает - представьте, что в наследнике от наследника нужно что-то изменить в предобработке : возникают сложности
...
Рейтинг: 0 / 0
20.07.2006, 19:46
    #33868297
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
Алексей Л.Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и pfc_PostOpen )Вот-вот... там (в PFC) такой фигни навалом. С месяц тому назад я уже говорил тут на форуме о кривизне PFC и о том что не стоит подражать использованым там приемам. Как раз из-за грубого нарушения принципов объектного дизайна.

Алексей Л.Фактически предложенный мной вариант означает не колбек, а
видоизменение "юзерского обьекта - кнопки" - теперь этот обьект
будет иметь 2 события доступных для потомков - предобработка и постобработка события clicked .Это и есть колбеки :) Но как и для любого колбека, их создание и поддержание требует чтобы их предусмотрели на этапе создания базового класса. Если два года назад, когда создавался класс базовой кнопки ты не предусмотрел в нем функции Pre_click/Post_click то сегодня, когда тебе понадобился такой финт - тебе прийдется лезть и править базовый класс. Чем любители PFC частенько и грешат :(

Алексей Л.кстати, мнение Ursego Только не забыть убрать птичку с Extend Ancestor ScriptЭто не мнение, это напоминание :) И кстати, я всегда говорил что эта птичка одно из самых дурацких изобретений PB. От нее больше вреда чем пользы, но увы она уже есть... Убил бы того идиота который ее придумал...

Алексей Л. - представьте, что в наследнике от наследника нужно что-то изменить в предобработке : возникают сложностиНикаких сложностей. Если так сильно нужно унаследовать от наследника... То код Clicked во внуке будет выглядеть так:
Код: plaintext
1.
2.
// пред обработка
GrandDadButton::Event Clicked()
// пост обработка
Здесь GrandDadButton это самый базовый класс.
...
Рейтинг: 0 / 0
20.07.2006, 19:47
    #33868299
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
Всегда можно вызвать конкретного предка по имени (вместо super). А уж если и это не помогает, то это уже красная лампочка зажглась - что-то не так в дизайне. Не должно быть таких сложностей если правильно спроектировано. Я не для подкола пишу - это правило прежде всего для меня.
...
Рейтинг: 0 / 0
20.07.2006, 19:49
    #33868306
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
Это был ответ Алексею. Что за идиотский форум, нельзя редактировать свои сообщения!
...
Рейтинг: 0 / 0
20.07.2006, 20:05
    #33868334
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
White Owl Алексей Л.Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и pfc_PostOpen )Вот-вот... там (в PFC) такой фигни навалом. С месяц тому назад я уже говорил тут на форуме о кривизне PFC и о том что не стоит подражать использованым там приемам. Как раз из-за грубого нарушения принципов объектного дизайна.

Бред. Какой именно из принципов нарушается?
Этот метод и есть самый правильный.

Java работает именно так. С использованием "колбеков" (так называемых).
Уж более обьектно ориентированного языка я не видел.

И я считаю что PFC очень правильно организован для того чтобы внедриться в любой уровень иерархии наследования обьектов.
...
Рейтинг: 0 / 0
20.07.2006, 20:19
    #33868356
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
Dmitry.И я считаю что PFC очень правильно организован для того чтобы внедриться в любой уровень иерархии наследования обьектов.Вот-вот... именно что внедрится , не унаследовать а внедрится... Вот когда вы начнете жить с PFC наследуя от нее а не внедряясь в нее тогда прийдете еще раз рассказывать какая это хорошая объектно ориентированая библиотека.
...
Рейтинг: 0 / 0
20.07.2006, 20:38
    #33868384
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
Г-н White Owl нам тут уже ранее наглядно продемонстрировал абсолютное непонимание PFC, так что можно смело игнорировать :-)
...
Рейтинг: 0 / 0
24.07.2006, 15:05
    #33874116
Konstantin Goldobin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Яйцо-курица-яйцо
Скажите, White Owl, а design pattern известный под названием
template method - это тоже колбэки и нарушение принципов
объектного дизайна?

--
With regards,
Konstantin Goldobin


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Яйцо-курица-яйцо / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]