Множественный выбор + иконки в Browse

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
PaNik

Множественный выбор + иконки в Browse

Сообщение PaNik »

Привет всем!

Вот решил своей проблемой поделиться.

Среда: С6.2(9048), АВС

Задача: Есть Форма - в ней связанный броуз. Хочется печатать только некоторые записи из списка. Идея была сделать множественный выбор, чтобы записи подсвечивались (или менялись иконки в строках).

Проблемы:
1. Множественный выбор только помечает строки. Повторное нажатие не снимает отметку выделения. Смотрел примеры - то же самое. А вот для не-АВС все работает правильно.
2. Как все таки сделать динамически меняющиеся иконки в Browse? Через pop-up меню помечаю записи, а иконки не меняются, хотя условия прописал....

Помогите люди добрые...:-)
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

Я еще в 5.5 такие вещи ручками решил обрабатывать, все без проблем работает...
Заводишь очередь из номерков, куда скидывается уникальный идентификатор записи в Browse (должен быть). Заносится от туда в твоем случае с Popup (я обрабатываю нажатие на Icon). На икону в пропертях (либо на цвет) ставишь условие (уникальный идентификатор записи = номерок из очереди), захидишь в Source и ищешь это место (SetQueueRecord по-моему в 5.5 было) и делаешь get по очереди.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7498
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

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

Аналогично ... ;)
Также можно задать для списка ALERTKey (например ПРОБЕЛ) и по его нажатию проверять наличие в очереди кода текщей записи - если есть, то удалять ее, если нет - то добавлять, потом обновлять список и сдвигать засветку на следующую запись: Post(Event:ScrollDown,?Browse:1).
Получится установка/снятия отметок пробелом - удобно !
Далее в отчет передаешь очередь и фильтруешь по ней записи при печати.
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

Вообще считаю что Browse шаблон в 5.5 ABC плохо продуман.
Нет удобной работы с иконами и цветами...
Нет обработки древовидной структуры...!
Если ключ сортировки составной, нет возможности ограничивать диапазон по нескольким полям...!
Нет возможности "подсовывать" в один лист разные файлы...! Удобно ведь и большие формы, где много связанных листов, разгружает.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7498
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

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

Зато какой простор для "творчества" ... ;)

1. Можно "ручками" сделать практически все.
2. Зато есть шаблон Tree - не best, но работает ...
3. Более или менее вопрос решен в C6, да и в C55 можно определить значения нескольких ключевых полей для выборки, только правдв в Embede ...
4. В общем-то делается, если "разные" файлы имеют одинаковую структуру. Я когда-то давно в проекте делал все Browse+Form на некий ALIAS, а его уже динамически переключал на один или несколько реальных файлов. Кажется, до сих пор работает ... ;)
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

У меня есть форма в одном проекте, порядка 50 разных и почти одинаковых листов на разных закладках. (карточка организации вообщем)
Так вот, в один прекрасный день компилиться она перестала. Ошибку выдавал что-то типа много вызовов процедуры brw?.AddField в ThisWindow.Init. Точно уже не помню, но смысл в этом. Начал копать, нашел, что после добавления очередного поля в любой Browse, и соответственно очередного AddField, компилятор начинал ругаться.

Кстати хотел бы поинтересоваться у метров, что это за переполнение такое, и сталкивался ли с ним кто еще?

Тогда нужно было решать быстро, получилось только с помощью OMIT и перетаскивания кусков кода из Init в Run по-моему, не суть.
После нескольких доработок данной формы и, есесено забываний про Omit, пришлось свой шаблон Browse ваять. Вот такой от геморой :D
gudkov
Бывалый
Сообщения: 67
Зарегистрирован: 03 Август 2005, 14:03
Откуда: Иркутск

Сообщение gudkov »

А можно поподробнее, в каком эмбеде прописывать ограничения по составному ключу? У меня С5.5ШВС, сейчас делаю так, ограничение по первому полю ключа прописываю в rangelimit, а нижестоящие поля ключа ограничиваю через фильтр(по идее гдето здесь писалось, что если поля ограничиваемые через фильтр имеються в ключе, то это тоже самое, что и rangelimit), но может быть это не так и прописав ограничения через эмбед я получу выигрышь в скорости выборки?
Сам не так давно перешел с CPD2.1, там была большая разница между фильтром и rangelimitom, даже если фильтруемые поля были в ключе, фильтр тормозил безбожно. В CPD2.1 значения ключевых полей я определял в setup procedure, и последнее ключевое поле для выборки определял в record selector'e, при такой организации, выборки выполнялись очень быстро в отличие от обычного фильтра, а как с этим быть в C5.5?
Удачи!
PaNik

Сообщение PaNik »

Игорь Столяров писал(а):Аналогично ... ;)
Также можно задать для списка ALERTKey (например ПРОБЕЛ)...
Кстати - встроенный шаблон по пробелу-то как раз работает нормально. :-)

Я с иконками еще не разобрался... Как Browse обновить. Не хочется в саму базу дополнительные поля вводить. Хотелось бы обойтись манипуляциями с очередями.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7498
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

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

> Кстати - встроенный шаблон по пробелу-то как раз работает нормально.
Значит, что-то все-таки меняется в лучшую сторону ... ;) Я уже давно не пытался эту возможность использовать, по описанным Выше причинам.

А обновить Browse можно несколькими способами. Самый простой:
- заведи переменную Loc:Change Byte(False)
- пропиши Loc:Change для Browse в Reset Fields (для каждой закладки !)
- и когда нужно обновить Browse вставь код вроде: Loc:Change = Choose(Loc:Change = False,True,False).
- Все.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7498
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

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

> А можно поподробнее, в каком эмбеде прописывать ограничения по составному ключу?

Извини, но ничего сказать не могу. С ШВС никогда не работал и никода не буду работать - там свой мир и свои юзеры. Legacy шаблоны практически уже не помню, т .к. полностью перешел на ABC еще с Clarion 4 ....
gudkov
Бывалый
Сообщения: 67
Зарегистрирован: 03 Август 2005, 14:03
Откуда: Иркутск

Сообщение gudkov »

Да бог с ними с шаблонами, мне бы знать в какой эмбед писать(хоть ABC-шный), я уж разберусь, какой легасевый эмбед ему соответствует
Удачи!
PaNik

Сообщение PaNik »

Спасибо за помощь! :-)

Разобрался и сделал.
Ответить