глюки ABC

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4566
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

глюки ABC

Сообщение finsoftrz »

kreator писал(а): 26 Май 2020, 21:51 А вот о чем речь. В Легаси и АБЦ разные подходы. Вы в Легаси стопы поставили после "close(window)", а в АБЦ этого нет. Ваши стопы стоят в методе Kill. А в нём формально окно не закрыто.
Принципиальная разница между классикой (к слову, странный термин легаси уже лет 10-15 не используется разработчиком, который признал равноправие обоих веток шаблонов) и абц в расположение структуры accept, case event, case field. В классике оно в теле основной процедуры, кодовые вставки делаются там же. В абц убрано в класс, а кодовые вставки делаются в виртуальных методах. Если мозги привыкли к четкой логике классического подхода, при начале работы с абц их надо перестраивать на то, что часть кода здесь, а часть кода упрятана.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

глюки ABC

Сообщение porutchik »

хорошо, попробуй закрыть окно по-другому. В рабочем у меня стопов не было, просто выжимку делал
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

глюки ABC

Сообщение kreator »

porutchik писал(а): 27 Май 2020, 0:12 хорошо, попробуй закрыть окно по-другому. В рабочем у меня стопов не было, просто выжимку делал
Окно не закрывается? Как понять? Если Вы о том, что где найти место вставки в процедуре окна, когда оно уже закрыто, то скорее всего нигде. Только снаружи процедуры.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

глюки ABC

Сообщение kreator »

finsoftrz писал(а): 26 Май 2020, 23:14 Принципиальная разница между классикой (к слову, странный термин легаси уже лет 10-15 не используется разработчиком, который признал равноправие обоих веток шаблонов)
Я согласен с Вами. Дайте термин. Слово "Классика" использовать? Все варианты неудобны, на мой взгляд. А вот когда говорят (говорим) "Легаси" всем понятно о чём речь.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4566
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

глюки ABC

Сообщение finsoftrz »

Есть официальное название clarion templates и abc templates. Иногда используют "процедурные шаблоны" и "объектные шаблоны", хотя это не совсем правильно, так как в стандартных clarion шаблонах сейчас также используются abc классы. Я предпочитаю названия " классические шаблоны" и "абц шаблоны". Причем разновидности ШВС тоже отношу к классическим. Разница в подходе, как я писал выше. Классические шаблоны появились в кларионе еще в dos версиях. Abc это уже придумка Байлисса из топспидовской команды, появилось в clarion4. Баррингтон, если помните, долго вообще не хотел вводить поддержку ооп, считая, что можно обойтись встроенными объектами. Потом, когда начал постепенно отходить от дел, отдал решение этих вопросов на усмотрение технических специалистов из топспида. Точнее, выходцев из jp.
Поэтому, как мне представляется, термин "классические шаблоны" наиболее точен. "Легаси" это термин, которым обозначают что-то устаревшее, унаследованное с прошлых времен. Однако на этих легаси оказалось проектов не намного меньше, чем на абц, и после распада топспида до Зунера дошло, что такое претенциозное название негативно сказывается на взаимоотношениях с пользователями.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

глюки ABC

Сообщение kreator »

Я не готов к термину "классические шаблоны". Для меня "классика" - это абц. "Классика" - это что-то стандартное, давно устоявшееся, как правило используемое. Опять же, термины типа "Clarion Chain" и "ABC Chain" вроде как нормальные, но по-русски это как? Надо, действительно, что-то придумать, чтобы уйти от слова "Легаси". И чтобы здесь, в сообществе всем было понятно о чём идёт речь.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

глюки ABC

Сообщение kreator »

По поводу рантаймных индексов. Вот такое предположение. В ABC структура и свойства таблицы формируются на этапе инициализации соответствующего класса. И далее изменения ограничены. Возможно и построение рантаймных индексов не ведёт ни к какой реакции в классе. Причём аналога\обёртки build в ABC нет. А в справке по build ничего отдельного для ABC не упоминается. Но это не криминал, как обычно.
We are hard at work… for you. :)
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

глюки ABC

Сообщение porutchik »

kreator писал(а): 27 Май 2020, 10:22 Если Вы о том, что где найти место вставки в процедуре окна, когда оно уже закрыто, то скорее всего нигде. Только снаружи процедуры.
сейчас приходиться несколькими окнами управлять из другой процедуры, что неудобно и тянет за собой глобальные переменный. Более удобно и привычно было раньше дать в окне нужные параметры и в зависимости от них вызвать после закрытия нужную процедуру и передать ей параметры
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

глюки ABC

Сообщение porutchik »

kreator писал(а): 27 Май 2020, 12:31 Возможно и построение рантаймных индексов не ведёт ни к какой реакции в классе
пытался в разные места класса вставлять buil - тот же эффект. Просто в легаси и приходилось "на ходу" перестраивать индекс в зависимости от разных параметров
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4566
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

глюки ABC

Сообщение finsoftrz »

В моем понимании классика это та архитектура, которая изначально закладывалась при создании продукта. Абц уж точно не классика, а пристегнутая позже технология. Когда-то кто-то написал, что Баррингтон устал отстаивать жизнеспособность концепции шаблонов в противовес объектному программированию (которое продвигали в делфях) и решил в конце концов убить двух зайцев. Типа у нас шаблоны, но они завязаны на классы.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

глюки ABC

Сообщение kreator »

porutchik писал(а): 27 Май 2020, 12:47
kreator писал(а): 27 Май 2020, 10:22 Если Вы о том, что где найти место вставки в процедуре окна, когда оно уже закрыто, то скорее всего нигде. Только снаружи процедуры.
сейчас приходиться несколькими окнами управлять из другой процедуры, что неудобно и тянет за собой глобальные переменный. Более удобно и привычно было раньше дать в окне нужные параметры и в зависимости от них вызвать после закрытия нужную процедуру и передать ей параметры
Вот не вижу в чём удобство. В нечитаемом коде? Объясните зачем из одного окна вызывать другое при этом закрыв первое, но из процедуры не выйти?
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

глюки ABC

Сообщение Yufil »

porutchik писал(а): 27 Май 2020, 12:49
kreator писал(а): 27 Май 2020, 12:31 Возможно и построение рантаймных индексов не ведёт ни к какой реакции в классе
пытался в разные места класса вставлять buil - тот же эффект. Просто в легаси и приходилось "на ходу" перестраивать индекс в зависимости от разных параметров
Окно в ABC-шаблонах явным образом не закрывается.

В ThisWindow.kill в обработчик надо вставить что-то типа
IF !STATUS(0) THEN CLOSE(0). или
IF !STATUS(Window) THEN CLOSE(Window).

Динамический индекс пробовал давным-давно, когда только что появилось. С Browse было несовместимо от слова совсем, Get по индексу не срабатывает, фильтр как-то очень своеобразно. Ошибочное условие просто игнорировалось. Да, ещё не все драйвера любят ( потом выскребал из Словаря при переносе на SQL ). В общем, View рулит...
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

глюки ABC

Сообщение Yufil »

kreator писал(а): 27 Май 2020, 13:37
porutchik писал(а): 27 Май 2020, 12:47
kreator писал(а): 27 Май 2020, 10:22 Если Вы о том, что где найти место вставки в процедуре окна, когда оно уже закрыто, то скорее всего нигде. Только снаружи процедуры.
сейчас приходиться несколькими окнами управлять из другой процедуры, что неудобно и тянет за собой глобальные переменный. Более удобно и привычно было раньше дать в окне нужные параметры и в зависимости от них вызвать после закрытия нужную процедуру и передать ей параметры
Вот не вижу в чём удобство. В нечитаемом коде? Объясните зачем из одного окна вызывать другое при этом закрыв первое, но из процедуры не выйти?
Я из процедуры с окном A вызвал процедуру с окном B. Хочу после закрытия окна B внести поправки в окно A. И облом, потому как в ABC окно до выхода из процедуры не закрывается.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

глюки ABC

Сообщение kreator »

Yufil писал(а): 27 Май 2020, 14:00 Я из процедуры с окном A вызвал процедуру с окном B. Хочу после закрытия окна B внести поправки в окно A. И облом, потому как в ABC окно до выхода из процедуры не закрывается.
Думаете понятно? В чём облом? Окно B не закрылось?
We are hard at work… for you. :)
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

глюки ABC

Сообщение porutchik »

kreator писал(а): 27 Май 2020, 13:37 Вот не вижу в чём удобство. В нечитаемом коде? Объясните зачем из одного окна вызывать другое при этом закрыв первое, но из процедуры не выйти?
почему не выйти? нужно завершить оконную процедуру и вызвать другое оно (репорт, и т.д.) в зависимости от вызывающей процедуры
Ответить