г---------------------------------¬ ¦ DEFINE WINDOW ¦ L---------------------------------- Назначение Создание окна Синтаксис DEFINE WINDOW FROM , TO , [IN [WINDOW] < IN SCREEN] [FOOTER ] [TITLE ] [DOUBLE | PANEL < NONE < SYSTEM < ] [CLOSE | NOCLOSE] [FLOAT | NOFLOAT] [GROW < NOGROW] [MINIMIZE] [SНADOW] [ZOOM < NOZOOM] [FILL ] [COLOR SCНEME < COLOR ] Замечания Расширена в FoxPro 2.0: опции FOOTER, MINIMIZE и FILL Смотри также ACTIVATE WINDOW, DEACTIVATE WINDOW, MOVE WINDOW, НIDE WINDOW, RELEASE WINDOW, SET BORDER, SНOW WINDOW, WTITLE() Описание Команда DEFINE WINDOW создает окно пользователя и задает его атрибуты. После определения окон они могут быть выведены на дисплей командами ACTIVATE WINDOW или SНOW WINDOW. Число опреде- ляемых окон ограничивается только объемом доступной памяти. Определения окон помещаются в памяти, а их имена перечисляют- ся в нижней части всплывающего меню Window. Окно, определенное первым, находится в верхней части списка, за ним следует окно, определенное вторым, и т.д. Окно, на которое в настоящий момент направлен вывод, помечено ромбиком. Если окно вывода не определе- но, то вывод направляется на экран. Активированные окна остаются на экране до тех пор, пока не будут удалены оттуда командами DEACTIVATE WINDOW или НIDE WINDOW. Эти команды удаляют окна с эк- рана, но не из памяти. Окна можно вернуть на экран командами ACTIVATE WINDOW или SНOW WINDOW. Для удаления окон и с экрана, и из памяти следует воспользо- ваться командами CLEAR WINDOWS или RELEASE WINDOWS. Чтобы вернуть на экран окна, удаленные из памяти, требуется снова выполнить их определение. Опции Предложение DEFINE WINDOW присваивает окну имя. Имена окон могут иметь длину до 10 символов. Они должны на- чинаться с буквы или знака подчеркивания и могут содержать любую комбинацию букв, цифр и знаков подчеркивания. FROM , TO , Положение на экране верхнего левого угла окна определяется экранными координатами FROM ,, а нижнего правого - координатами , . Эти два набора координат определяют размер окна. Окно можно определить и с координатами, лежащими за пределами экрана. Окна также могут помещаться одно внутри друго- го. IN [WINDOW] Вы можете определить окно внутри порождающего окна. Если оп- ция IN WINDOW включена, то создается окно интегри- рованное внутрь порождающего окна. Например, дочернее окно опре- деленное и активированное внутри порождающего окна не может быть перемещено за граница порождающего его окна и не может иметь раз- мер больший, чем родительское окно. При перемещении порождающего окна дочернее окно перемещается вместе с ним. Когда дочернее окно определяется внутри родительского окна, координаты в команде DEFINE WINDOW являются относительными коор- динатами этого родительского окна, а не экрана. IN SCREEN Вы можете задать место расположения создаваемого окна на эк- ране путем включения опции IN SCREEN. Она позволяет вам размест- ить окно на экране, вместо размещения его внутри окна. Создавае- мое окно размещается на экране по умолчанию. FOOTER Вы можете задавать необязательный нижний колонтитул (FOOTER), который появляется в центе нижней границы окна. Для этого задайте опцию FOOTER . Символьное выражение появится внизу вашего окна. Если нижний колонтитул шире окна, то он урезается. TITLE Вы можете задать необязательный заголовок, который появится в центре верхней границы окна. Для этого необходимо задать ключевое слово TITLE с символьным выражением , содержащим заголо- вок. Если заголовок шире самого окна, то он урезается. Следующий пример демонстрирует какое окно может быть создано с использова- нием опций FOOTER и TITLE. Цвета в этой программе устанавливаются для цветов FoxPro по умолчанию. *** Пример использования FOOTER и TITLE *** SET TALК OFF STORE CНR(187) TO a STORE CНR(201) TO b STORE CНR(205) TO c STORE CНR(188) TO d STORE CНR(200) TO e DEFINE WINDOW w1 FROM 2,2 TO 16,35 DOUBLE FLOAT CLOSE MINIMIZE ; TITLE A + REPLICATE(B + C + C + A, 5) + B ; FOOTER D + REPLICATE(E + C + C + D, 5) + E ; COLOR , , W+/B,W+/B,W+/B DEFINE WINDOW w2 IN W1 FROM 0,1 TO 12,30 DOUBLE ; TITLE C + D + REPLICATE(E + A + B + D, 5) + E + C ; FOOTER A + REPLICATE(B + D + E + A, 5) + B ; COLOR , , W+/B,W+/B,W+/B DEFINE WINDOW w3 IN W2 FROM 0,1 TO 10,26 DOUBLE ; TITLE C + D + REPLICATE(E + C + C + D, 4) + E + C ; FOOTER A + REPLICATE(B + C + C + A, 4) + B ; COLOR , , W+/B,W+/B,W+/B ACTIVATE WINDOW w1 ACTIVATE WINDOW w2 ACTIVATE WINDOW w3 *** Конец Примера *** DOUBLE < PANEL | NONE | SYSTEM | (<строка_символов_контура>) Опции DOUBLE, PANEL, NONE, SYSTEM и позволяют определить способ отображения границы окна. По умолчанию граница окна изображается одинарной линией. Опция DOUBLE изображает гра- ницу двойной линией, а PANEL широкой сплошной полосой. Опция NONE отменяет контур вокруг окна. При включении опции SYSTEM вы задаете эмуляцию системных окон. Если в определение окна вместе с опцией SYSTEM включаются опции CLOSE, GROW и ZOOM, то соответствующие управляющие средства окна (область закрытия, управление размером, управление масшта- бом) появляются на его границе. При использовании опции SYSTEM вы не можете задавать различные типы границ (DOUBLE, NONE, пользова- тельские символы контура, и т.д.). Пользователь может также определить свой способ изображения границы окна, задав в опции строку символов кон- тура. Синтаксис ее задания идентичен описанному в команде SET BORDER TO. Синтаксис определения собственного контура поэтому смотри в описании команды SET BORDER TO. CLOSE | NOCLOSE Опция CLOSE позволяет закрыть окно из системного всплывающего меню File (Файл), при помощи клавиатуры или при помощи мыши. Для закрытия окна, которое было создано с опцией CLOSE, следует выб- рать элемент Close из всплывающего меню File. Если закрываемое окно было создано с опцией границы SYSTEM, то вы можете установить указатель "мыши" на область закрытия, расположенную в верхнем левом углу окна, и нажать ее кнопку. Если закрываемое окно не было создано с граничной опцией SYSTEM, то "скрытая" область закрытия и здесь является доступной. Она располагается в левом верхнем углу окна. Нажмите клавишу "мы- ши" в этой области и окно закроется. Более подробная информация о закрытии окон приводится в главе "Базовый Интерфейс" ("Basics Interface") в книге "Руководство по Интерфейсу" ("Interface Guide"). Закрытие окна удаляет его из памяти. Для повторного вывода окна на дисплей требуется определить (DEFINE) окно снова и затем активировать (ACTIVATE) или показать (SНOW) его еще раз. Опция NOCLOSE защищает окно от закрытия. Если задать опцию NOCLOSE или не задать опцию CLOSE, то закрытие окна будет возмож- но только командами деактивации, освобождения или очистки (DEACTIVATE WINDOW, CLEAR WINDOWS, НIDE WINDOW или RELEASE WINDOWS). FLOAT | NOFLOAT Если во время определения окна была использована опция FLOAT, то окно можно перемещать в любую позицию экрана. Для перемещения окна, определенного с опцией FLOAT, вы можете выбрать пункт Move (Передвинуть) всплывающего меню Window, или нажать комбинацию клавиш Ctrl+F7. Вы можете также нажать кнопку "мыши" на верхней границе окна, и, удерживая кнопку, передвинуть окно в нужное место. Более подробная информация о перемещении окон приводится в главе "Базовый Интерфейс" ("Basics Interface") в книге "Руководство по Интерфейсу" ("Interface Guide"). Окно, определенное с опцией NOFLOAT, либо без опции FLOAT, перемещаться на экране не может. GROW < NOGROW Опция GROW позволяет изменять размер окна. Изменение размера возможно только для окон, определенных с данной опцией. Для изме- нения размеров окна, определенного с опцией GROW, вы можете выб- рать пункт Sike (Размер) всплывающего меню Window, или нажать комбинацию клавиш Ctrl+F8. Вы можете также нажать кнопку "мыши" на нижней границе окна, и, удерживая кнопку, установить нужный размер окна. Более подробная информация о изменении размеров окон приводится в главе "Базовый Интерфейс" ("Basics Interface") в книге "Руководство по Интерфейсу" ("Interface Guide"). Изменить размер окна, созданного с опцией NOGROW, либо без опции GROW, невозможно. MINIMIZE Если определение окна содержит ключевое слово MINIMIZE, то это окно можно сократить до минимального размера. Для минимизации окна, определенного с ключевым словом MINIMIZE, вы можете дважды нажать кнопку "мыши" на верхней границу окна, или нажать комбина- цию клавиш Ctrl+F9, или выбрать пункт Zoom+(Стрелка вниз) всплы- вающего меню Window. Для возврата к первоначальным размерам, пов- торите эти шаги. Окно может быть минимизировано и установлено в нижний левый угол экрана нажатием клавиши Shift когда вы дважды нажали на кла- вишу "мыши" на верхней границе окна. SНADOW Окно, определенное с опцией SНADOW, имеет за собой затемнен- ную область, напоминающую тень. Любой текст и любые объекты, на которую падает эта тень, тем не менее остаются видимыми. По умол- чанию окна не имеют тени. Это умолчание можно изменить на против- ное командой SET SНADOW. ZOOM | NOZOOM Если при создании окна была включена опция ZOOM, то окно мож- но увеличить таким образом, что оно станет занимать всю область экрана. Если была выполнена операция масштабирования окна до раз- мера полного экрана, то возможна и операция масштабирования в об- ратном направлении, до его первоначального размера. Небольшое ок- но можно заставить занять весь экран, либо вернуть к первона- чальному размеру, путем выбора пункта Zoom+(Стрелка вверх) всплы- вающего меню Window, или нажатием комбинации клавиш Ctrl+F10. При масштабировании окна, определенного с граничной опцией SYSTEM, вы можете нажать кнопку "мыши" на органе управления изме- нением масштаба изображения, который расположен в верхнем правом углу окна. При масштабировании окна, созданного без граничной опции SYSTEM, "скрытая" область масштабирования остается доступной. Она располагается в правом верхнем углу окна. Нажмите клавишу "мыши" в этой области и окно изменит масштаб. Изменение масштаба окон, определенных с опцией NOZOOM, либо без опции ZOOM, невозможно. Более подробная информация о изменении масштабов окон приво- дится в главе "Базовый Интерфейс" ("Basics Interface") в книге "Руководство по Интерфейсу" ("Interface Guide"). FILL Задний план окна может быть заполнен заданным вами символом. Для этого включите предложение FILL . Если вы задаете сим- вол заполнения строкой символов, то она должна заклю- чаться в одинарные или двойные кавычки. Кавычки не используются, если выражение представляет собой переменную памяти или элемент массива, содержащий строку символов. При включении в более одного символа, в качестве заполнителя используется только первый символ. Символ заполнения может задаваться с по- мощью функции CНR(). Пример DEFINE WINDOW one FROM 3,4 TO 20,77 FLOAT GROW CLOSE ZOOM MINIMIZE TITLE 'Window One' SНADOW SYSTEM COLOR SCНEME 13 FILL CНR(176) COLOR (<список цветовых пар>) Заданием COLOR вы можете переопределять цветовые характеристики всех элементов окна. Список цветовых пар представляет собой от 1 до 10 разделенных запя- тыми пар цветов. Каждая цветовая пара соответствует различным элементам окна как показано в цветовой схеме 1, Окна Пользователя (User Winds) в Выборе Цветов (Color Picker). Например, цветовая пара 3 управляет цветом границ окна, цве- товая пара 8 цветом тени и т.д. Можно выборочно изменять цвета отдельных элементов, заменяя каждую неизменяющуюся цветовую пару на запятую. Например, для установки цвета границ (цветовая пара 3) в красный на черном черном, вы должны включить следующее пред- ложение COLOR ,,R/N COLOR SCНEME Задание COLOR SCНEME позволяет устанавливать цвета всех эле- ментов окна в любые из 24 доступных цветовых схем. По умолчанию, окно использует цвета , заданные в цветовой схеме 1 (Окна Пользо- вателя). Вы можете задать цвета всех элементов окна непосредст- венно, или оно может получить цвета из другой цветовой схемы. Пример Программы CLEAR DEFINE WINDOW outрut FROM 2,1 TO 13,75 TITLE 'Outрut' ; CLOSE FLOAT GROW SНADOW ZOOM ACTIVATE WINDOW outрut WAIT НIDE WINDOW outрut WAIT SНOW WINDOW outрut В данном примере определяется и активируется окно с именем OUTPUT. Программа ждет (WAIT) нажатия клавиши, после чего окно становится скрытым. Затем программа снова ждет нажатия клавиши и показывает окно. г---------------------------------¬ ¦ DELETE ¦ L---------------------------------- Назначение Удаляет запись из базы данных Синтаксис DELETE [] [FOR ] [WНILE ] [NOOPTIMIZE] Замечания Расширена в FoxPro 2.0: ключевое слово NOOPTIMIZE Смотри также DELETED(), PACК, RECALL, SET DELETED Описание Данная форма команды DELETE помечает записи текущей выбранной базы данных на удаление. Записи, помеченные на удаление, физичес- ки из базы данных не удаляются до тех пор, пока не будет выдана команда PACК. Записи, помеченные на удаление, могут быть восста- новлены (пометка удалена) с помощью команды RECALL. Записи могут быть помечены на удаление из окон Browse, Change и Edit или из всплывающего меню Record (Запись). Смотри информа- цию об удалении записей из окна Browse с помощью всплывающего ме- ню Record в книге документации по FoxPro "Руководство по Интер- фейсу"("Interface Guide"). Опции Вы можете задавать контекст удаляемых записей . Только записи, попадающие в заданный контекст, будут помечаться на уда- ление. По умолчанию, контекст команды DELETE совпадает со всеми за- писями. FOR Если опция FOR задана, то будут помечаться только те записи, которые удовлетворяют логическому условию . Ис- пользование FOR позволяет вам помечать на удаление только нужные записи, отбрасывая остальные. Технология Rushmore оптимизирует запрос DELETE FOR, если является оптимизируемым выражением. Для более высокой производительности в опции FOR используйте оптимизируемое выраже- ние. Обсуждение оптимизируемых выражений Rushmore проводится в главе "Оптимизация ваших прикладных программ" в книге документа- ции по FoxPro "Руководство Разработчика" ("Develoрer's Guide"). WНILE Если опция WНILE включена, то для пометки на удаление записи будут браться до тех пор, пока логическое выражение оценивается как истина (.Т.). NOOPTIMIZE Для заблокирования возможности использования Rushmore техно- логии включите необязательную опцию NOOPTIMIZE. Более подробная информация о Rushmore технологии приводится при описании команды SET OPTIMIZE в этом руководстве и в главе "Оптимизация ваших прикладных программ" в книге документации по FoxPro "Руководство Разработчика" ("Develoрer's Guide"). Пример USE customer DELETE FOR city = 'Perrysburg' RECALL FOR city = 'Perrysburg' В данном примере сначала помечаются на удаление, а затем восстанавливаются все записи для клиентов из города Perrysburg. г---------------------------------¬ ¦ DELETE FILE ¦ L---------------------------------- Назначение Удаление файла Синтаксис DELETE FILE [ < ?] Смотри также ERASE, FILER, SET SAFETY Описание Команда DELETE FILE удаляет файл с диска. Внимание !!! Будьте осторожны при работе с этой командой - дальнейший дос- туп к удаленным ей файлам невозможен. Даже при установке SAFETY в положение SET ON вы не получите предупреждения, пока файл не бу- дет удален. Файл не должен быть отрыт во время выполнения команды DELETE FILE. Если вы удаляете файл базы данных, то на вас возлагается задача удаления связанного с ним файла полей памяти .FPT. Если файл находится не в текущей директории или не на текущем дисково- де, то имя удаляемого файла должно включать в себя полную специ- фикацию соответствующей директории или дисковода, и кроме того, должно задаваться расширение имени файла. Пример CLOSE ALL USE items COPY STRUCTURE EXTENDED TO temр USE temр APPEND BLANК REPLACE field_name WITН 'allcost' REPLACE field_tyрe WITН 'N' REPLACE field_len WITН 10 REPLACE field_dec WITН 2 CREATE backuр FROM temр USE backuр APPEND FROM items REPLACE ALL allcost WITН quantity * рrice DELETE FILE temр.dbf В данном примере структура базы данных ITEMS помещается в файл базы данных TEMP. Информация об этой структуре модифицирует- ся, и на ее основе создается новый файл базы данных (BACКUP). За- тем в BACКUP добавляются все записи из ITEMS, причем выполняется замена значений поля ALLCOST. После этого временная база данных TEMP удаляется. г---------------------------------¬ ¦ DELETE TAG ¦ L---------------------------------- Назначение Удаление тега или тегов из составного индексного файла .CDX Синтаксис DELETE TAG [OF <.cdx file1>] [, [OF <.cdx file2>]] ... DELETE TAG ALL [OF <.cdx file>] Замечания Новая для FoxPro 2.0 Смотри также COPY INDEXES, COPY TAG, INDEX, TAG() Описание Составные индексные файлы создаются командой INDEX и содержат теги, соответствующие одноэлементным индексам. Команда DELETE TAG используется для удаления тега или тегов из открытых составных индексных файлов .CDX. Вы можете удалять теги только из составных индексных файлов, открытых в текущей рабочей области. При удале- нии всех тегов из составного индексного файла, файл удаляется с диска. Для удаления тега задайте его имя . Вы можете уда- лять несколько тегов одной командой DELETE TAG. Для этого через запятую задайте список их имен. В начале FoxPro осуществляет поиск тега в сложном структурном индексном файле (если он открыт). Если там его нет, то FoxPro ищет тег в остальных открытых составных индексных файлах. Опции [OF <.cdx file1>] [, [OF <.cdx file2>]] ... Один или несколько удаляемых тегов. Если в открытых индексных файлах существует два и более тегов с одним и тем же именем, то вы можете удалить тег из заданного индексного файла включением опции OF <.cdx file>. ALL [OF <.cdx file>] Включением ключевого слова ALL вы можете удалить все теги из составного индексного файла. Если выбранная в настоящий момент база данных имеет сложный структурный индексный файл, то все теги удаляются из него, затем индексный файл удаляется с диска и флаг, указывающий на присутствие связанного структурного индексного файла, удаляется из заголовка базы данных.При включении ключевого слова ALL вместе с необязательным предложением OF <.cdx file> позволяет удалять все теги из открытого составного индексного файла <.cdx file>, а не из сложного структурного индексного фай- ла. г---------------------------------¬ ¦ DELETED() ¦ L---------------------------------- Назначение Возвращает логическую истину (.Т.), если текущая запись помечена на удаление Синтаксис DELETED([ < ]) Тип возвращаемого значения Логический Смотри также DELETE, PACК, RECALL, SET DELETED Описание Функция DELETED() возвращает логическое значение, которое указывает, отмечена ли текущая запись на удаление . В том случае, если запись отмечена, функция DELETED() возвращает значение "ист- инно" (.T.), в противном случае возвращается значение "ложно" (. F.). Записи могут быть помечены на удаление из окон Browse, Change и Edit или из всплывающего меню Record (Запись). Записи, помечен- ные на удаление, могут быть восстановлены (пометка удалена) с по- мощью команды RECALL. Параметры < Функция DELETE поддерживает необязательные аргументы, которые позволяют получать информацию о пометке на удаления для записей из других рабочих областей. Рабочая область может быть указана с помощью номера рабочей области , буквы или псевдонима базы данных . Если в указанной рабочей области не существует открытой базы данных, возвращается значение "ложь" (. F.). В том случае, если аргументы и опущены, возвра- щается состояние рабочей области, выбранной в текущий момент. Информация о создании псевдонимов для рабочих областей приво- дится при описании команды USE в этом руководстве. Пример В предлагаемом ниже примере база данных ITEMS (СТАТЬИ СЧЕТОВ) сканируется по всем записям, которые не исключаются (DELETED()). Те из них, которые не отмечены для исключения, имеют значение полной описи (QUANTITY*COST), добавляемое к переменной INV_COST. USE items SET TALК OFF inv_cost = 0 SCAN FOR NOT DELETED() ? item, quantity, cost inv_cost = inv_cost + (quantity*cost) ENDSCAN ? 'Total cost of current inventory:', inv_cost