LIST как BROWSE (Clarion 5.5)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 02 Август 2011, 12:40
- Откуда: г. Ленинск-Кузнецкий
Re: LIST как BROWSE (Clarion 5.5)
Привет всем! Огромное спасибо за разбор моей темы! Я же предупредил - я начинающий в CLARION'е. Да и программист - просто бооольшой любитель. Работа не с этим занятным делом связана. А конкретней по теме - ну, допустим, нужен обычный телефонный справочник. И так, база (кончно не ASCII - это даже мне понятно) на 4 поля: TELEFONE STRING(5), NAME STRING(31), ADDRESS STRING(31) и INFO STRING(31). В неё подгрузка из выбираемого текстового файла. Перемещение стрелками, функции редактирования - по EnterKey в поле под курсором. Выход из режима редактирования поля тоже по EnterKey. Сортировка по клику на заголовке столбца. Insert - добавить пустую запись в конец базы. Delete - удалить текущую запись. С этим вроде бы все ясно. Не могу разобраться как сделать фильтр с учетом всех четырех полей.
Спасибо.
Спасибо.
Re: LIST как BROWSE (Clarion 5.5)
Другое дело!
Могу посоветовать 2 варианта. Оба базируются на Browse-темплейте.
1. Воспользоваться QBE Filter Extension (20 минут работы с нуля).
2. Завести 4 локальных переменных, играющих роль фильтров да ещё одну "Фильтр включён/выключен". Естественно, размещаете их на окне.
Далее в embed ValidateRecord (Priority:5050) вставляете обработку типа
Можно, конечно, для задания фильтра пользоваться полем Record Filter в настройках самого browse. Но в данном случае, думаю, вставка в embed проще.
Провозился чуть больше часа.
Полученный действующий пример с обоими вариантами могу выслать.
Могу посоветовать 2 варианта. Оба базируются на Browse-темплейте.
1. Воспользоваться QBE Filter Extension (20 минут работы с нуля).
2. Завести 4 локальных переменных, играющих роль фильтров да ещё одну "Фильтр включён/выключен". Естественно, размещаете их на окне.
Далее в embed ValidateRecord (Priority:5050) вставляете обработку типа
Код: Выделить всё
if LOC:FilterEnabled
if LOC:TELEFONE>'' and ~instring(upper(clip(LOC:TELEFONE)),upper(WP:TELEFONE),1,1)
ReturnValue=Record:Filtered
end
if LOC:NAME>'' and ~instring(upper(clip(LOC:NAME)),upper(WP:NAME),1,1)
ReturnValue=Record:Filtered
end
if LOC:ADDRESS>'' and ~instring(upper(clip(LOC:ADDRESS)),upper(WP:ADDRESS),1,1)
ReturnValue=Record:Filtered
end
if LOC:INFO>'' and ~instring(upper(clip(LOC:INFO)),upper(WP:INFO),1,1)
ReturnValue=Record:Filtered
end
end
Провозился чуть больше часа.
Полученный действующий пример с обоими вариантами могу выслать.
-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 02 Август 2011, 12:40
- Откуда: г. Ленинск-Кузнецкий
Re: LIST как BROWSE (Clarion 5.5)
Я пока только занимаюсь изучением CLARION'а. И мне многое пока не ясно. Вы все утверждаете, что эта работа занимает 10-20 минут. Хорошо. Хотелось бы посмотреть как реализуется задача телеф. справочника со стандартным браузем. А я как закончу эту задачку на LIST'е, выставлю код - только сильно не пинайте. Будет приниматься всё - критика, пожелания, изменения кода.
Спасибо.
Спасибо.
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: LIST как BROWSE (Clarion 5.5)
Вообще-то для одной таблицы с четырьмя полями очень хорошо подходит Excel. Там и фильтр и сортировка.
Не надо по мухам мочить из пушки. А если серьезно, делаешь Browse, а потом добавляешь из Control Templates BrowseQBEButton. Там универсальный самонастраивающийся фильтр. Его достаточно для начала.

We are hard at work… for you. 

-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 02 Август 2011, 12:40
- Откуда: г. Ленинск-Кузнецкий
Re: LIST как BROWSE (Clarion 5.5)
Повторяю в сотый раз. На простых примерах приобретаю опыт ручного кодинга на CLARION. Да и больших задач не будет. Это только для себя. А что касается стрельбы по мухам, так что теперь 'HELLO WORLD!' под запретом? Так как тогда самообучаться?
P.S.
Всетаки, помогите кто-нибудь с описанием всех функций этого BROWSE. Лучше с простым примером для ознакомления.
Спасибо.
P.S.
Всетаки, помогите кто-нибудь с описанием всех функций этого BROWSE. Лучше с простым примером для ознакомления.
Спасибо.
- Губин Игорь
- Шубуршун
- Сообщения: 2583
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
Re: LIST как BROWSE (Clarion 5.5)
Самый первый совет - переползи на 8ку
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- Шубуршун
- Сообщения: 2583
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
Re: LIST как BROWSE (Clarion 5.5)
Второй совет - подобные вопросы обсуждаются только в разделе Приват. Для попадания туда есть специальная ветка "Здесь просимся в приват"
Это я только кажусь дураком! На самом деле я полный идиот!
- Дед Пахом
- Старичок
- Сообщения: 3288
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: LIST как BROWSE (Clarion 5.5)
В поставке (в том числе и 5.5) есть хорошие примеры (тот же School), почему туда не посмотреть, как это делается?
С уважением, ДП
-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 02 Август 2011, 12:40
- Откуда: г. Ленинск-Кузнецкий
Re: LIST как BROWSE (Clarion 5.5)
Здравствуйте все! Продолжаю тему LIST как BROWSE. Столкнулся с такой ситуацией. Немного научился работе с LISTом. Есть структура программы: File->View->Queue->List. Итак, перемещаемся стрелками по записям в LISTе, по нажатии Enter открываем окно для редактирования записи, изменяем поля, жмем 'сохранить и выйти'. Вопрос: как сделать чтоб в листе обновилось изображение отредактированной записи? У меня получается только перечитыванием файла.
Вот кусок кода. (Пожалуйста только без всяких шаблонов).
Вот кусок кода. (Пожалуйста только без всяких шаблонов).
Код: Выделить всё
OF ?EditRec ! нажали кнопку редактирования записи
OPEN(Win_Edit_Rec) ! открыли окно редактирования записи
ACCEPT
CASE ACCEPTED()
OF ?UpdRec ! сохранить отредактированную запись
F.R=Q
PUT(F,POINTER(Q))
DISPLAY
OF ?ExitRec ! выйти без сохранения
BREAK
.
.
CLOSE(Win_Edit_Rec)
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: LIST как BROWSE (Clarion 5.5)
Насколько я помню делали
BRWx.ResetFromFile или BRWх.ResetFromView
BRWx.ResetFromFile или BRWх.ResetFromView
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Дед Пахом
- Старичок
- Сообщения: 3288
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: LIST как BROWSE (Clarion 5.5)
Вот пример, лист обновляется автоматом (без DISPLAY(), на следующем срабатывании ACCEPT), хотя в Вашем случае DISPLAY(?List) может понадобиться.
Код: Выделить всё
program
map
FillQ()
DisplayQ()
ModifyQ(long qPos)
end
q queue, pre(q)
i long
end
code
DisplayQ()
FillQ procedure()
code
q.i=1; add(q)
q.i=2; add(q)
q.i=3; add(q)
q.i=4; add(q)
q.i=5; add(q)
DisplayQ procedure()
window WINDOW('List'),AT(,,159,94),FONT('MS Sans Serif',8,,),CENTER,GRAY,DOUBLE
LIST,AT(7,8,72,76),USE(?lstQ),VSCROLL,FORMAT('20R(2)|M~Value~L@n3@'),FROM(q)
BUTTON('+=1'),AT(108,32,45,14),USE(?btnIncrease)
BUTTON('Close'),AT(107,73,45,14),USE(?btnClose),STD(STD:Close)
END
code
FillQ()
open(window)
accept
if field() = ?btnIncrease and event() = Event:Accepted
ModifyQ(choice(?lstQ))
!display(?lstQ)
end
end
close(window)
ModifyQ procedure(long qPos)
code
get(q, qPos)
if not errorcode()
q.i += 1; put(q)
end
С уважением, ДП