Керівництво FoxPro 2

Можна сказати, щоBROWSE - найбільш потужна та гнучка команда FoxPro. Значні шматки вашої програми ви можете побудувати, не використовуючи нічого, крім функцій, що викликаються з пропозицій команди.

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

Переміщення у вікні BROWSE

Стрілки управління курсором переміщують курсор у вікні однією запис, клавішіPgUp, PgDn - переміщають курсор групу записів. Переміщення між полями виконується клавішею табуляціїTab абоShift-Tab.

Вихід із режиму BROWSE

Щоб вийти зі збереженням змін, натиснітьCtrl-W, Ctrl-End або наведіть курсор миші на елемент керування у верхньому лівому куті вікна і натисніть ліву кнопку. Якщо ви натиснетеCtrl-Q абоEscape, ви втратите зміни, внесені до поточного поля. Програмно вийти з режиму зі збереженням даних можна за допомогою команди:

ON KEY LABEL F10 KEYBOARD[]

у настановній частині програми та додавши повідомлення "F10 для виходу" в текст на верхній або нижній частині рамки вікна.

Для редагування memo-поля підведіть курсор до нього і натиснітьCtrl-PgDn або двічі клацніть лівою кнопкою миші, коли курсор на потрібному полі. Для виходу з вікна редагування зі збереженням змін натиснітьCtrl-W або наведіть курсор миші на елемент керування у верхньому лівому куті вікна і натисніть ліву кнопку, натиснувшиEsc ви вийде з втратою внесених змін. Знов-таки можна використовувати призначення клавіш:

USE CUSTOMER ON KEY LABEL F4 KEYBOARD [] BROWSE FIELDS >FUNCTION BrowseMsg WAIT WINDOW [F4 для редагування] NOWAIT

Пропозиції команди

КомандаBROWSE підтримує великий набір пропозицій. Пропоную вам їх список із коротким описом кожного.FIELDS - Ця пропозиція може бути використана для обмеження полів, що виводяться тільки тими, що представлені в спискуfield list. Список може включати будь-яку комбінацію полів бази даних та/або полів, що обчислюються. Формат списку наступний:

До кожного поля можна прив'язати набір власних пропозицій, які забезпечують гнучкість роботи команди у конкретній ситуації. Ось що означає кожна з пропозицій:

:R означає, що поле має атрибут "тільки для читання".

:nn визначає ширину колонки, що виводиться і є необов'язковим.

:V= передує умові перевірки введення (VALID ), яка може бути представлена ​​функцією користувача.

:F після пропозиціїVALID забезпечує примусову перевірку правильності введення, навіть якщо значення в полі не змінилося.

:Е= визначає реакцію системи на неправильне введення (якщо аналіз введення в пропозиціїVALID дасть значення.F. ).

:P= це пропозиціяPICTURE.

:B= визначає діапазон допустимих значень, який повинен попадати значення поля.

:Н= визначає заголовок для поля при виведенні його на екран, зручно для обчислюваних полів.

:W= визначає умову перевірки при вході в поле або виконує деяку спеціальну дію. Я широко використовую цю пропозицію для надання режиму певних властивостей.

Полі, що обчислюються

Крім полів з будь-якого відкритого в даний момент файлу даних, ви можете створювати нові, наприклад: =

Обчислюваним полям надається атрибут "тільки для читання" і вони часто використовуються для виведення на екран різного родурозрахункових величин Їх можна також використовувати для виведення прапорів, що вказують на наявність або відсутність дочірніх записів в іншому файлі (див. Лістинг 3-1).

FOR ПропозиціяFOR спільно з умовою фільтрації може бути використана для обмеження записів, що виводяться тільки тими, які задовольняють умові фільтра. Якщо ви створите вираз фільтрації, що оптимізується, ви будете вражені з якою швидкістю воно обробляється.

FORMAT дозволяє використовувати файл формату виводу. Для підключення певного формату виведення вам спочатку необхідно виконати дві дії:

1) Створити текстовий файл із розширенням .FMT, що містить вирази@. GET з усіма необхідними пропозиціямиVALID, WHEN, RANGE таPICTURE. Координати при@. GET повинні бути однаковими (наприклад,@0,0 GET. )

2) Виконати командуSET FORMAT TO перед виконанням командиBROWSE FORMAT.

Полі, що обчислюються в BROWSE

З файлу формату система отримує наступну інформацію, яка потім зв'язується з вікномBROWSE:

  • Список полів виводу
  • Наявні пропозиціїVALID
  • Наявні пропозиціїWHEN
  • Наявні пропозиціїRANGE
  • Ширина колонок визначається пропозицієюPICTURE
  • Всі виразиSAY включаються як поля, що обчислюються

FREEZE Якщо ви вкажете в пропозиціїFREEZE ім'я поля, ви зможете редагувати тільки це поле. Якщо список не вказано, виводяться всі поля. Це особливо зручно для організації введення даних у новостворене поле файлу.

KEY вир1 [,выр2] Вираз приKEY обмежує діапазон записів, що виводяться. Першим записом, що виводиться у вікно, виявляється та,значення ключового виразу якої відповідає виразу1. Вираз2 визначає нижню межу значення ключового виразу для діапазону записів, що виводиться.

LAST Введення в команду пропозиціїLAST забезпечує виведення вікна з усіма атрибутами, які були збережені в ресурсному файлі Foxuser.dbf з моменту останнього виведення вікна з аналогічним ім'ям. Запам'ятовування конфігураціїBROWSE відбувається лише в тому випадку, якщо є установкаSETRESOURCEON. Вимкнення режиму збереження конфігурації значно прискорить роботуBROWSE.

LOCKLOCK визначає кількість полів, що виводяться в лівій панелі вікнаBROWSE.

LPARTITION поміщає курсор у першому полі лівої панелі або правої панелі, якщо у складі команди немає пропозиціїPARTITION.

NOAPPEND забороняє додавати нові записи до файлу, поки користувач знаходиться у вікніBROWSE.

NOCLEAR за наявності цієї пропозиції вікноBROWSE залишається на екрані або у своєму вікні після виходу з режиму.

NODELETE Зазвичай ви можете позначити запис як віддалений натиснувшиCtrl-T, вибравши опціюToggle Delete у випадаючому менюBrowse або натиснувши ліву кнопку миші коли курсор розташований у крайній лівій колонці вікна. Якщо ви включили в команду пропозиціюNODELETE, записи не можуть бути позначені для видалення.

NOEDIT NOMODIFY забороняють внесення змін до файлу даних.

NOLGRID NOGRID дозволяють отримати вікно без вертикальних ліній, що розділяють поля запису.

NOLINK вимикає синхронізацію панелей.

NOMENU блокує доступ до менюBROWSE та його опцій.

NOOPTIMIZE відключає використання Rushmore. Використовуйте цепропозиція, якщо процедура, пов'язана з пропозицієюVALID, може змінювати значення поля, що входить у вираз індексування.

NOREFRESH Під час роботи в мережі вміст вікнаBROWSE оновлюється кожні n секунд (частота оновлення визначається установкоюSET REFRESH ). Увімкнення пропозиціїNOREFRESH блокує оновлення. При роботі з файлами "тільки для читання" використанняNOREFRESH дозволяє підвищити продуктивність. (Примітка: Я завжди встановлююSET REFRESH TO 0, і в цьому випадку пропозиція не діє).

NORMAL ЗазвичайBROWSE приймає атрибути (колір, розмір і положення, атрибути заголовка, властивості вікна:ZOOM,GROW,FLOAT. ) визначеного користувачем вікна, яке на даний момент активно і розташоване нагорі стека. Якщо ви включите в команду пропозиціюNORMAL, то вікноBROWSE відкривається так, якби воно було єдиним активним вікном. Ця пропозиція діє тільки за наявності активного вікна користувача (або якщо вам необхідно ігнорувати установки, збережені в ресурсному файлі, - прим. пров.).

NOWAIT наявність цієї пропозиції дозволяє продовжити виконання програми негайно після виведення вікнаBROWSE. Пропозиція використовується в тому випадку, якщо ви хочете вивести дані у вікніBROWSE, але не збираєтеся переглядати файл, поки користувач не переключиться на це вікно.

PARTITION expN2 Ця пропозиція використовується для розділення вікна на дві панелі. Значення expN2 визначає положення роздільника панелей.

PREFERENCE expC1 Ви можете зберегти поточні атрибути вікнаBROWSE у файлі Foxuser.Dbf під певним ім'ям і використовувати їх надалі.

TIMEOUT expN3Значення при пропозиціїTIMEOUT визначає як довгоBROWSE буде очікувати введення перед тим, як автоматично закритися. Період вказується за секунди. Ця пропозиція аналогічна пропозиціїTIMEOUT командиREAD і використовується в мережевих програмах для запобігання блокуванню файлу.

TITLE expC2 Користувач може встановити власний заголовок вікна, розташований на верхній рамці.

VALID expL2 [ERROR expC3] Код, прив'язаний до пропозиціїVALID, відпрацьовується при переході на інший запис у вікні. Увімкнення цієї пропозиції дозволяє вам встановлювати перевірку на рівні записів. Логіка, пов'язана з пропозицією, відпрацьовується, лише якщо користувач вніс будь-які зміни до вмісту запису. ЯкщоVALID повертає логічне.Т., ви можете перейти на інший запис. Ви можете призначити примусову перевірку, поставивши:F або/F після словаVALID. У цьому випадку перевірка буде виконуватися, навіть якщо вміст запису не змінився. ЯкщоVALID повертає.F. ви не можете залишити запис і система видає повідомлення про помилку. Якщо повертається0, курсор залишається на поточному записі, але повідомлення про помилку не виводиться.

WHEN expL3 Ця пропозиція використовується для перевірки доступності запису. ЯкщоWHEN повертає.F. або0, запис, на який ви переходите, стає недоступним для редагування. Так якWHEN виконується при вході в новий запис, його також можна використовувати для ініціалізації інших значень.

WIDTH expN4 Число при пропозиціїWIDTH визначає ширину всіх полів, що виводяться. Якщо для індивідуального поля ширина задана всередині пропозиціїFIELDS, це значення має пріоритет. Для виведеннябільшої кількості полів на екран можна використовувати команду типу:BROWSE WIDTH 15.

WINDOWIN WINDOW ПропозиціяWINDOW відкриваєBROWSE у раніше визначеному вікні командоюDEFINE WINDOW. ПропозиціяWINDOW активізує це вікно і поміщає в нього вікноBROWSE, яке заповнює його і приймає його атрибути. Якщо використана пропозиціяIN WINDOW, то вікноBROWSE відкривається всередині вказаного вікна, але незалежно від нього.BROWSE не приймає атрибутів батьківського вікна. Вікно, зазначене у реченніIN WINDOW, має бути визначене заздалегідь командоюDEFINE WINDOW. Я використовую цю пропозицію для створення спеціальних рамок для моїхBROWSE.