Заблудился в трех колонках

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Заблудился в трех колонках

Сообщение Игорь Столяров »

Привет всем !

Что-то я совсем запутался ... :(

Есть некий произвольный ?Browse, предположим с тремя колонками.
Через ?Browse:PropList{PropList:Width,НОМЕР_КОЛОНКИ} - легко могу управлять их шириной.

Но когда пытаюсь поменять местами через ?Browse:PropList{PropListFieldNo,НОМЕР_КОЛОНКИ}
например 1 и 3 колонку - либо не срабатывает, либо формат вообще слетает ... :(

Или что-то я не понимаю в происходящем или оно не работает почему-то. :(
Поможите кто чем может пожалуйста ... как поменять местами колонки через PropList:XЗ ?
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Заблудился в трех колонках

Сообщение kreator »

Игорь Столяров писал(а):Но когда пытаюсь поменять местами через ?Browse:PropList{PropListFieldNo,НОМЕР_КОЛОНКИ}
Правильный код:

Код: Выделить всё

  ?Browse{PropList:FieldNo,НОМЕР_КОЛОНКИ} = 3
Должен работать. На всякий случай, вот мой стародавний вариант (сразу не вспомню, где-нибудь использую ли PropList:FieldNo?):

Код: Выделить всё

if choice(?CurrentTab)=2 or choice(?CurrentTab)=5
  ?Browse:1{PROP:FORMAT} =  '110L(1)|M~Название по-латински~C(1)@s30@#2#' &|
                            '109L(1)|M~Название по-русски~C(1)@s30@#1#'   &|
                            '50R(1)|M~Площадь~C(0)@n16b@#3#'              &|
                            '109L(1)|M~Континент~C(0)@s30@#4#'            &|
                            '73L(1)|M~Местоположение~C(2)@s20@#5#'        &|
                            '120L(1)|M~Столица~C(2)@s30@#6#'
else
  ?Browse:1{PROP:FORMAT} =  '109L(1)|M~Название по-русски~C(1)@s30@#1#'   &|
                            '110L(1)|M~Название по-латински~C(1)@s30@#2#' &|
                            '50R(1)|M~Площадь~C(0)@n16b@#3#'              &|
                            '109L(1)|M~Континент~C(0)@s30@#4#'            &|
                            '73L(1)|M~Местоположение~C(2)@s20@#5#'        &|
                            '120L(1)|M~Столица~C(2)@s30@#6#'
end
Это работает железно.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Заблудился в трех колонках

Сообщение Игорь Столяров »

Не ... это ты просто перезаписываешь всю структуру BROWSE через Prop:Format ...
А у меня некий произвольный BROWSE, я получаю только указатель на него.
Через PropList: ... могу добраться до структуру колонок и управлять их размером.
А хочется менять местами колонки ... но не получается. :(
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Заблудился в трех колонках

Сообщение kreator »

Вот попробовал на С8.9759:

Код: Выделить всё

?List{proplist:FieldNo,1} = 2
?List{proplist:FieldNo,2} = 1
Переставляет как надо. Если оставить что-нибудь одно, то формат портится.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Заблудился в трех колонках

Сообщение Игорь Столяров »

Спасибо - вроде получилось ...

Номер из proplist:FieldNo - определяет содержание колонки из FROM(), а не ее расположение в списке. И это менять не надо.
А что бы менять колонки местами, действительно, нужно склеивать формат LIST'а из форматов колонок в нужном порядке, например меняем местами 1 и 3 колонки:

Код: Выделить всё

F1 = ?Browse{PropList:Format,1}
F2 = ?Browse{PropList:Format,2}
F3 = ?Browse{PropList:Format,3}
?Browse{Prop:Format} = Clip(F3) & Clip(F2) & Clip(F1)
Разобрал файл BrwExt.clw из LibSrc Clarion'а - там все это есть ...
Единственно, осталось смутное ощущение, что тот кто его писал - что-то не то курил ... :idied:
Make Clarion Great Again ! 😎
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: Заблудился в трех колонках

Сообщение Admin »

Игорь Столяров писал(а):Единственно, осталось смутное ощущение, что тот кто его писал - что-то не то курил ... :idied:
Тянется с DOS`а. Для совместимости cверху навернули разного. Раньше было проще.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Заблудился в трех колонках

Сообщение Игорь Столяров »

Admin писал(а):Тянется с DOS`а. Для совместимости cверху навернули разного. Раньше было проще.
Да, муть полная. Если для десктопа еще как-то можно юзать, то для планшетных приложений не подходит совсем.
Решил разобрать и переписать, но уже через день возник вопрос: А где можно взять то, что курил автор BrwExt.clw ? :idied:
Make Clarion Great Again ! 😎
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Заблудился в трех колонках

Сообщение Игорь Столяров »

Вообще конечно Clarion забавный язык, как сам по себе, так и в плане документирования.
Зачастую единственный способ понять его работу - это изучение уже имеющего кода (в LibSrc).

Долго пытался понять тайный смысл фрагмента в BrwExt.clw (здесь SELF.m_Control это ?LIST)

Код: Выделить всё

  loc_LoopIndex = 0
  loc_Columns   = 0
  LOOP
      loc_LoopIndex += 1
      IF NOT SELF.m_Control{PROPLIST:Exists,loc_LoopIndex} THEN BREAK.
      loc_Columns = SELF.m_Control{Proplist:FieldNo,loc_LoopIndex}
      SELF.m_Control{Proplist:FieldNo,loc_LoopIndex}=loc_Columns
  END
Реальность превзошла все фантазии. Нигде в документации описание такого фокуса я не видел ! :idied:
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Заблудился в трех колонках

Сообщение kreator »

И американцы имеют право на ошибку. Здесь хоть кусок бесполезный, а ведь есть явные ошибки. Которые годами не исправляются.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Заблудился в трех колонках

Сообщение Игорь Столяров »

kreator писал(а):Здесь хоть кусок бесполезный,
В том-то и проблема, что это кусок крайне полезный.
Он неявно выполняет дополнение формата ?LIST привязкой к данным из структуры FROM().
Пока это не сделано - отображение структуры ?LIST работает, но изменять расположение колонок нельзя ... ;)

Код: Выделить всё

  Message(SELF.m_Control{Prop:Format})
  ! Указанный ранее кусок преобразования ?LIST
  Message(SELF.m_Control{Prop:Format})
Но, судя по всему, эта возможность не документирована, хотя и используется.
Впрочем как и возможность создавать ?LIST с произвольным расположением полей для которых фиксирован горизонтальный скроллинг
(а не только крайними левыми - как указано в документации и делается через редактирование структуры LIST в среде разработки).
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Заблудился в трех колонках

Сообщение kreator »

Игорь Столяров писал(а):
loc_Columns = SELF.m_Control{Proplist:FieldNo,loc_LoopIndex}
SELF.m_Control{Proplist:FieldNo,loc_LoopIndex}=loc_Columns
Т.е. вот этот фрагмент имеет смысл? Тогда мне нужно либо на покой, либо браться за матчасть. :mrgreen:
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Заблудился в трех колонках

Сообщение Игорь Столяров »

kreator писал(а):Т.е. вот этот фрагмент имеет смысл?
Да, см. мое предыдущее сообщения - я все расписал.
Здесь скорее речь идет о неявной (скрытой) инициализации формата LIST.
Ничего плохого в этом нет ... плохо то, что это нигде не описано в справке по языку.
Остается только догадываться сколько таких неявных действий есть еще в других местах ...
Make Clarion Great Again ! 😎
Ответить