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
Для показу "при наведенні" код буде набагато більшим.
Куди та як повісититаймер на періодичне оновлення лист-боксу
Питання: Куди і як повісити таймер на періодичне оновлення лист-боксу? Бажано зі збереженням положення курсору.