Множественный выбор + иконки в Browse
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Множественный выбор + иконки в Browse
Привет всем!
Вот решил своей проблемой поделиться.
Среда: С6.2(9048), АВС
Задача: Есть Форма - в ней связанный броуз. Хочется печатать только некоторые записи из списка. Идея была сделать множественный выбор, чтобы записи подсвечивались (или менялись иконки в строках).
Проблемы:
1. Множественный выбор только помечает строки. Повторное нажатие не снимает отметку выделения. Смотрел примеры - то же самое. А вот для не-АВС все работает правильно.
2. Как все таки сделать динамически меняющиеся иконки в Browse? Через pop-up меню помечаю записи, а иконки не меняются, хотя условия прописал....
Помогите люди добрые...
Вот решил своей проблемой поделиться.
Среда: С6.2(9048), АВС
Задача: Есть Форма - в ней связанный броуз. Хочется печатать только некоторые записи из списка. Идея была сделать множественный выбор, чтобы записи подсвечивались (или менялись иконки в строках).
Проблемы:
1. Множественный выбор только помечает строки. Повторное нажатие не снимает отметку выделения. Смотрел примеры - то же самое. А вот для не-АВС все работает правильно.
2. Как все таки сделать динамически меняющиеся иконки в Browse? Через pop-up меню помечаю записи, а иконки не меняются, хотя условия прописал....
Помогите люди добрые...
-
- Ветеран
- Сообщения: 333
- Зарегистрирован: 21 Сентябрь 2005, 11:05
- Откуда: Нижний Новгород
- Контактная информация:
Я еще в 5.5 такие вещи ручками решил обрабатывать, все без проблем работает...
Заводишь очередь из номерков, куда скидывается уникальный идентификатор записи в Browse (должен быть). Заносится от туда в твоем случае с Popup (я обрабатываю нажатие на Icon). На икону в пропертях (либо на цвет) ставишь условие (уникальный идентификатор записи = номерок из очереди), захидишь в Source и ищешь это место (SetQueueRecord по-моему в 5.5 было) и делаешь get по очереди.
Заводишь очередь из номерков, куда скидывается уникальный идентификатор записи в Browse (должен быть). Заносится от туда в твоем случае с Popup (я обрабатываю нажатие на Icon). На икону в пропертях (либо на цвет) ставишь условие (уникальный идентификатор записи = номерок из очереди), захидишь в Source и ищешь это место (SetQueueRecord по-моему в 5.5 было) и делаешь get по очереди.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7498
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 18 раз
- Поблагодарили: 51 раз
Аналогично ...
Также можно задать для списка ALERTKey (например ПРОБЕЛ) и по его нажатию проверять наличие в очереди кода текщей записи - если есть, то удалять ее, если нет - то добавлять, потом обновлять список и сдвигать засветку на следующую запись: Post(Event:ScrollDown,?Browse:1).
Получится установка/снятия отметок пробелом - удобно !
Далее в отчет передаешь очередь и фильтруешь по ней записи при печати.
Также можно задать для списка ALERTKey (например ПРОБЕЛ) и по его нажатию проверять наличие в очереди кода текщей записи - если есть, то удалять ее, если нет - то добавлять, потом обновлять список и сдвигать засветку на следующую запись: Post(Event:ScrollDown,?Browse:1).
Получится установка/снятия отметок пробелом - удобно !
Далее в отчет передаешь очередь и фильтруешь по ней записи при печати.
-
- Ветеран
- Сообщения: 333
- Зарегистрирован: 21 Сентябрь 2005, 11:05
- Откуда: Нижний Новгород
- Контактная информация:
Вообще считаю что Browse шаблон в 5.5 ABC плохо продуман.
Нет удобной работы с иконами и цветами...
Нет обработки древовидной структуры...!
Если ключ сортировки составной, нет возможности ограничивать диапазон по нескольким полям...!
Нет возможности "подсовывать" в один лист разные файлы...! Удобно ведь и большие формы, где много связанных листов, разгружает.
Нет удобной работы с иконами и цветами...
Нет обработки древовидной структуры...!
Если ключ сортировки составной, нет возможности ограничивать диапазон по нескольким полям...!
Нет возможности "подсовывать" в один лист разные файлы...! Удобно ведь и большие формы, где много связанных листов, разгружает.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7498
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 18 раз
- Поблагодарили: 51 раз
Зато какой простор для "творчества" ...
1. Можно "ручками" сделать практически все.
2. Зато есть шаблон Tree - не best, но работает ...
3. Более или менее вопрос решен в C6, да и в C55 можно определить значения нескольких ключевых полей для выборки, только правдв в Embede ...
4. В общем-то делается, если "разные" файлы имеют одинаковую структуру. Я когда-то давно в проекте делал все Browse+Form на некий ALIAS, а его уже динамически переключал на один или несколько реальных файлов. Кажется, до сих пор работает ...
1. Можно "ручками" сделать практически все.
2. Зато есть шаблон Tree - не best, но работает ...
3. Более или менее вопрос решен в C6, да и в C55 можно определить значения нескольких ключевых полей для выборки, только правдв в Embede ...
4. В общем-то делается, если "разные" файлы имеют одинаковую структуру. Я когда-то давно в проекте делал все Browse+Form на некий ALIAS, а его уже динамически переключал на один или несколько реальных файлов. Кажется, до сих пор работает ...
-
- Ветеран
- Сообщения: 333
- Зарегистрирован: 21 Сентябрь 2005, 11:05
- Откуда: Нижний Новгород
- Контактная информация:
У меня есть форма в одном проекте, порядка 50 разных и почти одинаковых листов на разных закладках. (карточка организации вообщем)
Так вот, в один прекрасный день компилиться она перестала. Ошибку выдавал что-то типа много вызовов процедуры brw?.AddField в ThisWindow.Init. Точно уже не помню, но смысл в этом. Начал копать, нашел, что после добавления очередного поля в любой Browse, и соответственно очередного AddField, компилятор начинал ругаться.
Кстати хотел бы поинтересоваться у метров, что это за переполнение такое, и сталкивался ли с ним кто еще?
Тогда нужно было решать быстро, получилось только с помощью OMIT и перетаскивания кусков кода из Init в Run по-моему, не суть.
После нескольких доработок данной формы и, есесено забываний про Omit, пришлось свой шаблон Browse ваять. Вот такой от геморой
Так вот, в один прекрасный день компилиться она перестала. Ошибку выдавал что-то типа много вызовов процедуры brw?.AddField в ThisWindow.Init. Точно уже не помню, но смысл в этом. Начал копать, нашел, что после добавления очередного поля в любой Browse, и соответственно очередного AddField, компилятор начинал ругаться.
Кстати хотел бы поинтересоваться у метров, что это за переполнение такое, и сталкивался ли с ним кто еще?
Тогда нужно было решать быстро, получилось только с помощью OMIT и перетаскивания кусков кода из Init в Run по-моему, не суть.
После нескольких доработок данной формы и, есесено забываний про Omit, пришлось свой шаблон Browse ваять. Вот такой от геморой
А можно поподробнее, в каком эмбеде прописывать ограничения по составному ключу? У меня С5.5ШВС, сейчас делаю так, ограничение по первому полю ключа прописываю в rangelimit, а нижестоящие поля ключа ограничиваю через фильтр(по идее гдето здесь писалось, что если поля ограничиваемые через фильтр имеються в ключе, то это тоже самое, что и rangelimit), но может быть это не так и прописав ограничения через эмбед я получу выигрышь в скорости выборки?
Сам не так давно перешел с CPD2.1, там была большая разница между фильтром и rangelimitom, даже если фильтруемые поля были в ключе, фильтр тормозил безбожно. В CPD2.1 значения ключевых полей я определял в setup procedure, и последнее ключевое поле для выборки определял в record selector'e, при такой организации, выборки выполнялись очень быстро в отличие от обычного фильтра, а как с этим быть в C5.5?
Сам не так давно перешел с CPD2.1, там была большая разница между фильтром и rangelimitom, даже если фильтруемые поля были в ключе, фильтр тормозил безбожно. В CPD2.1 значения ключевых полей я определял в setup procedure, и последнее ключевое поле для выборки определял в record selector'e, при такой организации, выборки выполнялись очень быстро в отличие от обычного фильтра, а как с этим быть в C5.5?
Удачи!
Кстати - встроенный шаблон по пробелу-то как раз работает нормально.Игорь Столяров писал(а):Аналогично ...
Также можно задать для списка 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).
- Все.
Значит, что-то все-таки меняется в лучшую сторону ... Я уже давно не пытался эту возможность использовать, по описанным Выше причинам.
А обновить 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 раз