Browse - відповіді на питання, що часто ставляться по CfW

Питання: 1) Після певного редагування форми необхідно повністю заблокувати вихід по клавіші "ESC"? 2) Як блокувати додавання запису в browse на кнопці INSERT? Disable(?insert) проблеми не вирішує

Відповідь : Для вікна форми визначити Alert ESC і більше нічого не робити.

А для повної заборони додавання нового запису впиши Disable(?Insert) у точку вставки типу "На початку циклу ACCEPT".

Проблему вирішив, додавши обробку методу TakeKey класу Browse

Номер та ширина стовпця в Browse?

Чи можна відловити номер стовпця (і його ширину) при виконанні EVENT:ColumnResize ?

Виклик спливаючого меню

Підкажіть, чи можна у вікні на ListBox по натисканню MouseRight викликати спливаюче меню ?

Відповідь: Повісити на потрібний листбокс Alert за кнопкою MouseRight, а потім відпрацювати подію EVENT:AlertKey, відловивши KEYCODE() = MouseRight:

Другий спосіб: відловити KEYCODE() = RightMouse в обробці події EVENT:NewSelection, причому в цьому випадку заносити MouseRight до списку Alert'ів не потрібно.

Читання запису з Browse по мишці

Чи можна зробити так, щоб клікнув мишею на запис у Browse і вона вписалася в змінні?

Відповідь: У Legacy:

DO Browse:FillBuffer! Оновили буфер запису

BrowseClass.UpdateBuffer! Оновили буфер запису

aLEX TimkovICQuin: 62605472

Як програмно стрибнути деяке значення ключа, тобто. маючи значення та натиснувши на кнопочку виділити у Browse відповідний рядок.

Відповідь : Якщо це про ABC, то

А якщо про Legacy, то

Brwnn::LocateMode=LocateOnValue Do Brwnn::LocateRecord

З повагою,Юрій Філософів

Відповідь 2: Дякую, до речі є другий підхід: CHANGE(Locator control, Значення) POST(Event:Accepted, Locator Control)

Чи можна динамічно створювати стовпці у ListBox?

Відповідь 1: Звичайно так. Для цього треба зарезервувати в Listqueue необхідний набір полів

Відповідь 2: Напряму цього зробити не можна. Тільки через зміну формату виводу. Формуєш новий рядок формату з потрібними колонками і робиш? List = NewFormat. У принципі, звісно, ​​нічого складного.

А є ще один спосіб. Спочатку створюєш список з великою кількістю колонок і призначаєш їм нульову довжину. А при виконанні програми просто встановлюєш потрібну ширину колонкам, які треба показати і скидаєш назад у 0 у тих колонок, які треба приховати.

Як відловити click на заголовку колонки в листбоксі?

З повагою, Сергій Жабін

Як визначити положення курсору у бровзі?

Відповідь 1: По клавіші: ListPosition = CHOICE(?List) За натисканням миші: ListPosition = Window$?List

Відповідь 2: Щоб дізнатися, в якій колонці клікнули мишею треба скористатися пропами:

А визначення номера поля у черзі: Field# = ?List

А тепер або через CASE по кожному полю або через процедури What/Who/Where можна працювати з потрібним полем.

Tips на полі в листбоксі

Чи можна якось зробити tips на полі у листбоксі. Тип показувати повністю поле при наведенні на колонку мишки.

Відповідь: Можна, але тільки ручками. Наприклад, якщо показувати запис не при наведенні, а при виборі (NewSelection), то код буде щось на зразок

Чи можна ще поставити після відкриття вікна ?List=0

Для показу "при наведенні" код буде набагато більшим.

Куди та як повісититаймер на періодичне оновлення лист-боксу

Питання: Куди і як повісити таймер на періодичне оновлення лист-боксу? Бажано зі збереженням положення курсору.