ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 7

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          DEFINE WINDOW          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание окна
    Синтаксис
DEFINE WINDOW 
      FROM ,  TO , 
      [IN [WINDOW]  | IN SCREEN]
      [FOOTER ]
      [TITLE ]
      [DOUBLE | PANEL | NONE | SYSTEM | ]
      [CLOSE | NOCLOSE]
      [FLOAT | NOFLOAT]
      [GROW | NOGROW]
      [MINIMIZE]
      [SHADOW]
      [ZOOM | NOZOOM]
      [FILL ]
      [COLOR SCHEME  | COLOR ]
    Замечания
Расширена в FoxPro 2.0: опции FOOTER, MINIMIZE и FILL
    Смотри также
ACTIVATE WINDOW, DEACTIVATE WINDOW, MOVE WINDOW, HIDE WINDOW,
RELEASE WINDOW, SET BORDER, SHOW WINDOW, WTITLE()

    Описание
    Команда DEFINE  WINDOW создает окно пользователя и задает его атт-
рибуты.  После определения окон они могут быть выведены на дисплей ко-
мандами ACTIVATE WINDOW или SHOW WINDOW. Число определяемых окон огра-
ничивается только объемом доступной памяти.
    Определения окон  помещаются в памяти,  а их имена перечисляются в
нижней части всплывающего меню Window.  Окно, определенное первым, на-
ходится в верхней части списка, за ним следует окно, определенное вто-
рым, и т.д. Окно, на которое в настоящий момент направлен вывод, поме-
чено ромбиком.  Если окно вывода не определено,  то вывод направляется
на экран.  Активированные окна остаются на экране до тех пор,  пока не
будут удалены оттуда командами DEACTIVATE WINDOW или HIDE WINDOW.  Эти
команды удаляют окна с экрана,  но не из памяти. Окна можно вернуть на
экран командами ACTIVATE WINDOW или SHOW 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 TALK OFF
STORE CHR(187) TO a
STORE CHR(201) TO b
STORE CHR(205) TO c
STORE CHR(188) TO d
STORE CHR(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) или показать (SHOW) его еще раз.
    Опция NOCLOSE защищает окно от закрытия. Если задать опцию NOCLOSE
или не задать опцию CLOSE,  то закрытие окна будет возможно только ко-
мандами  деактивации,  освобождения  или  очистки  (DEACTIVATE WINDOW,
CLEAR WINDOWS, HIDE WINDOW или RELEASE WINDOWS).

    FLOAT | NOFLOAT
    Если во  время определения окна была использована опция FLOAT,  то
окно можно перемещать в любую позицию экрана.
    Для перемещения окна, определенного с опцией FLOAT, вы можете выб-
рать пункт Move (Передвинуть) всплывающего  меню  Window,  или  нажать
комбинацию  клавиш  Ctrl+F7.  Вы  можете также нажать кнопку "мыши" на
верхней границе окна,  и,  удерживая кнопку, передвинуть окно в нужное
место. Более подробная информация о перемещении окон приводится в гла-
ве "Базовый Интерфейс" ("Basics Interface") в  книге  "Руководство  по
Интерфейсу" ("Interface Guide").
    Окно, определенное с опцией NOFLOAT, либо без опции FLOAT, переме-
щаться на экране не может.

    GROW | NOGROW
    Опция GROW позволяет изменять размер окна.  Изменение размера воз-
можно  только  для окон,  определенных с данной опцией.  Для изменения
размеров окна,  определенного с опцией GROW,  вы можете выбрать  пункт
Size  (Размер) всплывающего меню Window,  или нажать комбинацию клавиш
Ctrl+F8.  Вы можете также нажать кнопку "мыши" на нижней границе окна,
и,  удерживая кнопку,  установить нужный размер окна.  Более подробная
информация о изменении размеров окон приводится в главе  "Базовый  Ин-
терфейс"  ("Basics  Interface")  в  книге  "Руководство по Интерфейсу"
("Interface Guide").
    Изменить размер окна,  созданного с опцией NOGROW,  либо без опции
GROW, невозможно.

    MINIMIZE
    Если определение окна содержит ключевое слово MINIMIZE, то это ок-
но можно сократить до минимального размера.  Для минимизации окна, оп-
ределенного с ключевым словом MINIMIZE, вы можете дважды нажать кнопку
"мыши" на верхней границу окна,  или нажать комбинацию клавиш Ctrl+F9,
или выбрать  пункт  Zoom+(Стрелка вниз) всплывающего меню Window.  Для
возврата к первоначальным размерам, повторите эти шаги.
    Окно может  быть  минимизировано и установлено в нижний левый угол
экрана нажатием клавиши Shift когда вы дважды нажали на клавишу "мыши"
на верхней границе окна.

     SHADOW
    Окно, определенное с опцией SHADOW, имеет за собой затемненную об-
ласть,  напоминающую тень. Любой текст и любые объекты, на которую па-
дает эта тень,  тем не менее остаются видимыми.  По умолчанию окна  не
имеют  тени.  Это  умолчание  можно изменить на противное командой SET
SHADOW.

    ZOOM | NOZOOM
    Если при  создании  окна  была включена опция ZOOM,  то окно можно
увеличить таким образом,  что оно станет занимать всю область  экрана.
Если  была  выполнена операция масштабирования окна до размера полного
экрана, то возможна и операция масштабирования в обратном направлении,
до его первоначального размера.  Небольшое окно можно заставить занять
весь экран, либо вернуть к первоначальному размеру, путем выбора пунк-
та Zoom+(Стрелка вверх) всплывающего меню Window,  или нажатием комби-
нации клавиш Ctrl+F10.
    При масштабировании окна, определенного с граничной опцией SYSTEM,
вы можете нажать кнопку "мыши" на органе управления изменением масшта-
ба изображения, который расположен в верхнем правом углу окна.
    При масштабировании окна,  созданного без граничной опции  SYSTEM,
"скрытая"  область масштабирования остается доступной.  Она располага-
ется в правом верхнем углу окна. Нажмите клавишу "мыши" в этой области
и окно изменит масштаб.
    Изменение масштаба окон,  определенных с опцией NOZOOM,  либо  без
опции ZOOM, невозможно.
    Более подробная информация о изменении масштабов окон приводится в
главе "Базовый Интерфейс" ("Basics Interface") в книге "Руководство по
Интерфейсу" ("Interface Guide").

    FILL 
    Задний план  окна может быть заполнен заданным вами символом.  Для
этого включите предложение FILL . Если вы задаете символ запол-
нения  строкой символов,  то она должна заключаться в одинарные
или двойные кавычки.  Кавычки не используются,  если выражение 
представляет собой  переменную памяти или элемент массива,  содержащий
строку символов.  При включении в  более одного символа,  в ка-
честве заполнителя используется только первый символ.  Символ заполне-
ния может задаваться с помощью функции CHR().

    Пример
DEFINE WINDOW one FROM 3,4 TO 20,77
FLOAT GROW CLOSE ZOOM MINIMIZE TITLE 'Window One'
SHADOW SYSTEM COLOR SCHEME 13 FILL CHR(176)

    COLOR  (<список цветовых пар>)
    Заданием COLOR  вы можете переопределять цветовые
характеристики  всех  элементов окна.  Список цветовых пар  представляет собой от 1 до 10 разделенных запятыми  пар  цветов.
Каждая  цветовая пара соответствует различным элементам окна как пока-
зано в цветовой схеме 1,  Окна Пользователя (User Winds) в Выборе Цве-
тов (Color Picker).
    Например, цветовая пара 3 управляет цветом границ  окна,  цветовая
пара  8  цветом  тени и т.д.  Можно выборочно изменять цвета отдельных
элементов,  заменяя каждую неизменяющуюся цветовую  пару  на  запятую.
Например,  для  установки  цвета границ (цветовая пара 3) в красный на
черном черном, вы должны включить следующее предложение
    COLOR ,,R/N

    COLOR SCHEME 
    Задание COLOR SCHEME позволяет устанавливать цвета всех  элементов
окна в любые из 24 доступных цветовых схем. По умолчанию, окно исполь-
зует цвета , заданные в цветовой схеме 1 (Окна Пользователя). Вы може-
те  задать  цвета всех элементов окна непосредственно ,  или оно может
получить цвета из другой цветовой схемы.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є        Пример Программы         є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
CLEAR
DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Output' ;
        CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW output
WAIT
HIDE WINDOW output
WAIT
SHOW WINDOW output
    В данном примере определяется и активируется окно с именем OUTPUT.
Программа  ждет  (WAIT)  нажатия  клавиши,  после чего окно становится
скрытым. Затем программа снова ждет нажатия клавиши и показывает окно.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             DELETE              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Удаляет запись из базы данных
    Синтаксис
DELETE []
        [FOR ]
        [WHILE ]
        [NOOPTIMIZE]
    Замечания
Расширена в FoxPro 2.0: ключевое слово NOOPTIMIZE
    Смотри также
DELETED(), PACK, RECALL, SET DELETED
    
    Описание
    Данная форма команды DELETE помечает записи текущей выбранной базы
данных на удаление.  Записи, помеченные на удаление, физически из базы
данных не удаляются до тех пор, пока не будет выдана команда PACK. За-
писи, помеченные на удаление, могут быть восстановлены (пометка удале-
на) с помощью команды RECALL.
    Записи могут  быть  помечены на удаление из окон Browse,  Change и
Edit или из всплывающего меню Record (Запись).  Смотри  информацию  об
удалении записей  из  окна Browse с помощью всплывающего меню Record в
книге документации по FoxPro  "Руководство  по  Интерфейсу"("Interface
Guide").
    
    Опции
    
    Вы можете задавать контекст удаляемых записей .  Только за-
писи, попадающие в заданный контекст, будут помечаться на удаление.
    По умолчанию, контекст команды DELETE совпадает со всеми записями.
    
    FOR 
    Если опция FOR  задана,  то будут помечаться только те  за-
писи, которые удовлетворяют логическому условию . Использование
FOR позволяет вам помечать на удаление только нужные записи,  отбрасы-
вая остальные.
    Технология Rushmore оптимизирует запрос DELETE FOR,  если  
является  оптимизируемым выражением.  Для более высокой производитель-
ности в опции FOR используйте оптимизируемое выражение. Обсуждение оп-
тимизируемых  выражений Rushmore проводится в главе "Оптимизация ваших
прикладных программ" в книге документации по FoxPro "Руководство  Раз-
работчика" ("Developer's Guide").

    WHILE 
    Если опция WHILE  включена,  то для пометки на удаление за-
писи будут браться до тех пор,  пока логическое выражение  оце-
нивается как истина (.Т.).

    NOOPTIMIZE
    Для заблокирования  возможности  использования Rushmore технологии
включите необязательную опцию NOOPTIMIZE. Более подробная информация о
Rushmore  технологии  приводится  при  описании команды SET OPTIMIZE в
этом руководстве и в главе "Оптимизация ваших прикладных  программ"  в
книге  документации по FoxPro "Руководство Разработчика" ("Developer's
Guide").
    
    Пример
USE customer
DELETE FOR city = 'Perrysburg'
RECALL FOR city = 'Perrysburg'
    В данном примере сначала помечаются на удаление,  а затем  восста-
навливаются все записи для клиентов из города Perrysburg.
                                                         
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           DELETE FILE           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Удаление файла
    Синтаксис
DELETE FILE [ | ?]
    Смотри также
ERASE, FILER, SET SAFETY
    
    Описание
    Команда DELETE FILE удаляет файл  с диска.
    Внимание !!!
    Будьте осторожны при работе с этой командой - дальнейший доступ  к
удаленным ей файлам невозможен.  Даже при установке SAFETY в положение
SET ON вы не получите предупреждения, пока файл не будет удален.
    Файл не должен быть отрыт во время выполнения команды DELETE FILE.
Если вы удаляете файл базы данных, то на вас возлагается задача удале-
ния связанного с ним файла полей памяти .FPT.  Если файл находится не в
текущей директории или не на текущем дисководе, то имя удаляемого фай-
ла должно включать в себя полную спецификацию соответствующей директо-
рии или дисковода,  и кроме того,  должно задаваться расширение  имени
файла.
    
    Пример
CLOSE ALL
USE items
COPY STRUCTURE EXTENDED TO temp
USE temp
APPEND BLANK
REPLACE field_name WITH 'allcost'
REPLACE field_type WITH 'N'
REPLACE field_len WITH 10
REPLACE field_dec WITH 2
CREATE backup FROM temp
USE backup
APPEND FROM items
REPLACE ALL allcost WITH quantity * price
DELETE FILE temp.dbf
    В данном примере структура базы данных ITEMS помещается в файл ба-
зы данных TEMP.  Информация об этой структуре модифицируется,  и на ее
основе создается новый файл базы данных (BACKUP).  Затем в BACKUP  до-
бавляются все записи из ITEMS, причем выполняется замена значений поля
ALLCOST. После этого временная база данных TEMP удаляется.
    
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           DELETE TAG            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Удаление тега или тегов из составного индексного файла .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()           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает логическую  истину  (.Т.),  если текущая запись помечена на
удаление
    Синтаксис
DELETED([ | ])
    Тип возвращаемого значения
Логический
    Смотри также
DELETE, PACK, RECALL, SET DELETED
              
    Описание
    Функция DELETED() возвращает логическое значение, которое указыва-
ет, отмечена ли текущая запись на удаление . В том случае, если запись
отмечена,  функция  DELETED()  возвращает значение "истинно" (.T.),  в
противном случае возвращается значение "ложно" (.F.).
    Записи могут  быть  помечены на удаление из окон Browse,  Change и
Edit или из всплывающего меню Record (Запись).  Записи,  помеченные на
удаление, могут быть восстановлены (пометка удалена) с помощью команды
RECALL.
    
    Параметры  | 
    Функция DELETE поддерживает необязательные аргументы, которые поз-
воляют получать информацию о пометке на удаления для записей из других
рабочих областей.
    Рабочая область может быть указана с помощью  номера  рабочей  об-
ласти ,  буквы или псевдонима базы данных . Если в указан-
ной рабочей области не существует открытой базы  данных,  возвращается
значение "ложь" (.F.).
    В том случае, если аргументы  и  опущены, возвращается
состояние рабочей области, выбранной в текущий момент.
    Информация о создании псевдонимов для рабочих областей  приводится
при описании команды USE в этом руководстве.
    
    Пример
    В предлагаемом ниже примере база данных ITEMS (СТАТЬИ СЧЕТОВ) ска-
нируется  по всем записям,  которые не исключаются (DELETED()).  Те из
них,  которые не отмечены для исключения,  имеют значение полной описи
(QUANTITY*COST), добавляемое к переменной INV_COST.
USE items
SET TALK 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
    
    


?????? ???????????