Форум » [x]Harbour » Хочется странного - DBEDIT() » Ответить

Хочется странного - DBEDIT()

Sergy: Добрый день. Неожиданно, понял, что меня раздражает в "стандартном" DBEDIT(), который с минимальными добавками (в основном, под мышь) использую из стандартного Harbour 3.4. Пример: есть НЕБОЛЬШОЙ справочник, наподобие такого: [pre2] ┌─ Выберите способ доставки ─────┐ │008 Газель 1.5т 8 куб.м │ │003 Зил-Бычок 3.0т 17 куб.м │ │002 Зил-Бычок 3.0т 25 куб.м │ │001 МАЗ-Зубренок 5.0т 35 куб.м │ │004 MAN тент 5.0т 36 куб.м │ │005 Foton 5.0т 26 куб.м │ │006 Truck 7.0т 36 куб.м │ │007 Доставка ТК (опл.за кг) │ └────────────────────────────────┘ [/pre2] Юзер выбирает некоторый элемент из него, программа в STATIC запоминает - чтобы юзеру было удобно. Например, он выбрал Foton. Через некоторое время юзер вновь открывает этот справочник, по STATIC переменной подставляется "прежнее" значение, оно становится "текущим" в этом справочнике, а DBEDIT() выглядит примерно таким образом: [pre2] ┌─ Выберите способ доставки ─────┐ │005 Foton 5.0т 26 куб.м │ │006 Truck 7.0т 36 куб.м │ │007 Доставка ТК (опл.за кг) │ │ │ │ │ │ │ │ │ │ │ └────────────────────────────────┘ [/pre2] Ну некузяво-же... Хотелось-бы видеть таблицу без пустого пространства снизу, но при этом текущая запись д.б. той, которую юзер использовал в предыдущий раз. Как с этим можно побороться? Загнать справочник строками в ACHOICE, который не имеет таких проблем - тоже способ, но какой-то уж очень "европейский". Спасибо.

Ответов - 24, стр: 1 2 All

Sergy: SergKis пишет: У меня такой вышел вариант Попробовал. Все супер. DBEDIT() работает так, как и должен. Интересное решение с внедрением "своих" функций в тело чужого класса. Не знал о нем, спасибо.

azoo: Можно ли с DBEDIT сделать что-то подобное чтобы "заморозить" пару первых столбцов ?

Dima: Можно если переделать сырец , как морозить колонки смотри в примерах

Pasha: dbEdit реализован через класс TBrowse, но в работает в кондовом стиле 30-летней давности Summer'87 (2017-1987=30(!) лет). Если совсем не заморачиваться, то надо скопировать модуль dbedit.prg себе в сырцы, добавить еще один параметр к функции dbedit, добавить фрагмент: if nFreeze # nil oBrowse:freeze := nFreeze endif прилинковать исправленный модуль, и радоваться. Лучше конечно сделать свою реализацию для использования класса TBrowse, который тоже старичок, ему аж 25 лет.



полная версия страницы