powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Яйцо-курица-яйцо
14 сообщений из 14, страница 1 из 1
Яйцо-курица-яйцо
    #33862690
Заранее извиняюсь если выражаюсь технически некорретно.

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

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

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


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

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

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

Позвольте с вами не согласиться (насчет ненужно).
Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и
pfc_PostOpen )
Фактически предложенный мной вариант означает не колбек, а
видоизменение "юзерского обьекта - кнопки" - теперь этот обьект
будет иметь 2 события доступных для потомков - предобработка и постобработка события clicked .
А с вариантом Super::EVENT Clicked() ИМХО могут в дальнейшем возникнуть сложности при дальнейшей правке кода. (в моей практике такие случаи были неоднократно )
кстати, мнение Ursego Только не забыть убрать птичку с Extend Ancestor Script это подтверждает - представьте, что в наследнике от наследника нужно что-то изменить в предобработке : возникают сложности
...
Рейтинг: 0 / 0
Яйцо-курица-яйцо
    #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
Яйцо-курица-яйцо
    #33868299
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда можно вызвать конкретного предка по имени (вместо super). А уж если и это не помогает, то это уже красная лампочка зажглась - что-то не так в дизайне. Не должно быть таких сложностей если правильно спроектировано. Я не для подкола пишу - это правило прежде всего для меня.
...
Рейтинг: 0 / 0
Яйцо-курица-яйцо
    #33868306
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был ответ Алексею. Что за идиотский форум, нельзя редактировать свои сообщения!
...
Рейтинг: 0 / 0
Яйцо-курица-яйцо
    #33868334
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Алексей Л.Вариант предложенный мной взят из PFC (аналогично событиям pfc_PreOpen и pfc_PostOpen )Вот-вот... там (в PFC) такой фигни навалом. С месяц тому назад я уже говорил тут на форуме о кривизне PFC и о том что не стоит подражать использованым там приемам. Как раз из-за грубого нарушения принципов объектного дизайна.

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

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

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

--
With regards,
Konstantin Goldobin


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


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