Visual FoxPro включает функциональные возможности, которые отличаются от предыдущих версий и могли бы затронуть выполнение существующего кода. Эти изменения поведения классифицируются согласно следующим категориям:

Критические Изменения

Критические изменения поведения будут наиболее вероятно затрагивать существующий код при выполнении под этой версией Visual FoxPro.

SQL SELECTIN (Value_Set) Предложение

В предыдущих версиях Visual FoxPro, предложение IN ( Value_Set ) для предложения WHERE в SQL команде SELECT работает как в функции INLIST( ) . В текущем выпуске, Visual FoxPro может прекратить вычисление значений и выражений в перечне Value_Set , когда первое соответствие найдено. Поэтому, если предложение IN Не Rushmore-оптимизировано, Вы можете улучшить выполнение, помещая наиболее вероятное значения для сравнения в начало списка Value_Set . Для подробной информации, см. описание для предложения IN в теме SELECT - SQL Команда и INLIST( ) Функция .

Преобразование Функцим INLIST( ) в Проектировщике Запроса и Проектировщике Представлений

В предыдущих версиях Visual FoxPro, Проектировщик Запросов и Проектировщик Представлений конвертируют запросы функции INLIST( ) в предложение WHERE SQL команды SELECT в предложение IN ( Value_Set ). В текущей версии, это преобразование больше не происходит из-за различий между предложениями INLIST( ) и SQL IN . INLIST( ) остается ограничен 24 параметрами. Для подробной информации, см. описание для предложения IN в темах SELECT - SQL Команда и INLIST( ) Функция .

Гриды и Свойства RecordSource и ControlSource

В Visual FoxProе 9.0 есть изменение в поведении Элемента управления Грид . Когда свойство RecordSource определено для элемента управления Грид, Visual FoxPro 9.0 сбрасывает значение свойств ControlSource всех колонок в пустую строку (""). В более ранних версиях Visual FoxPro, свойства ControlSource не очищались должным образом, так что могли появиться проблемы, когда RecordSource с другой структурой позднее привязывался к данных. Это изменение может повлиять на выполнение сценариев, с использование методов Access и Assign или запросов функции BINDEVENT( ) , сделанные в отношении свойства ControlSource столбца Grid'а.

Важные Изменения

Важные изменения могли бы затронуть существующий код при выполнении под Visual FoxPro 9.0.

Reporting

Visual FoxPro содержит много усовершенствований для системы репортов. Изменения поведения, которые могут воздействовать на существующие отчеты, следующие:

  • Report Designer и Механизм теперь используют расширяемые компоненты. Вы можете разрешить или запретить использование расширенного режима в design-time, изменяя значение Системной Переменной _REPORTBUILDER . Вы управляете использованием расширения в run-time командой SET REPORTBEHAVIOR .

  • В новом режиме объектно-ассистированной системы отчетов Visual FoxProе 9's, поля отчета, возможно, должны быть немного расширены. Это особенно важно для числовых данных, где поле, которое имеет недостаточную ширину для вывода всего числа, показывает вместо него звездочки (*****). Для подробной информации об изменениях в Системе Отчетов, которые потребовали этих изменений, и особенностей механизма рендеринга GDI+, и других изменений, связанных с этим, смотри Использование GDI+ в Отчетах . Для выработки стратегии миграции и рекомендаций, см. Руководство об Усовершенствованиях Системы Отчетов .

  • Для таблицы дополнительных, незначительных различий рендеринга между обратно совместимым режимом системы отчетов и объектно-ассистированным режимом системы отчетов , см. таблицу ниже.

    Особенности механизма рендеринга Поведение обратно-совместимого режима Поведение объектно-ассистированного режима Рекомендации

    Табуляторы ( CHR(9) значения, включенные в данные отчета)

    Ширина табулятора определена числом символов в используемом шрифте.

    Табуляторы установлены в позициях фиксированной ширины, независимо от шрифта.

    Если Вы используете пристыковку табуляторов к данным в расширяющемся элементе раскладки отчета, чтобы создать формат таблицы в пределах элемента, Вы можете выполнить то же самое задание, используя вторую полосу данных в Visual FoxProе 9. Дополнительно, измените количество табуляторов, которые Вы стыкуете с вашими данными.

    Специальные символы и переход на новую строку

    Не разбивающие строку пробелы не желательны; они обрабатываются как нормальные пробелы.

    Специальные символы типа не разбивающих строку пробелов ( CHR(160) ) и мягкие дефисы ( CHR(173) ) интерпретируются правильно. В результате, слова могут переноситься по-разному.

    Проверьте результаты. В большинстве случаев, пользователи оценят изменение, потому что оно лучше отображает первоначальные отступы в тексте. В случае необходимости, используйте CHRTRAN () Функцию или STRTRAN () Функцию для замены эти специальных символов стандартными пробелами и дефисами.

    Интервал между строками многострочных объектов

    Интервал между строками определен формулой, которая не учитывает свойства шрифта. Строки в многострочном объекте обрабатываются индивидуально, так что цветовой фон для каждой строки, может приобретать разную ширину.

    GDI+ интервал между строками динамически определен, использованием характеристик шрифта. Многострочный объект обрабатывается как отдельный блок текста.

    Проверьте результаты. В большинстве случаев, изменение в интервалах обеспечит более привлекательный вид, и во всяком случае этот метод обработки многострочного текста обеспечивает более быстрое выполнение. Если вывод отчета зависит от старого стиля интервала строк, Вы можете корректировать свойство ReportListener'а DynamicLineHeight и возвратиться к старому поведению.

    Курсор изображений (.CUR файлы)

    .CUR файлы могут использоваться как источники изображения в отчетах.

    .CUR файлы не поддерживаются как источники изображения.

    Конвертируйте файл курсора в другой, поддерживаемый формат изображения.

    Сглаживание Фигуры (Округленный Прямоугольник)

    Ограниченный выбор для сглаживания.

    Больше способов доступно через интерфейс диалогового окна Report Builder Application, но некоторые не будут смотреться в обратно совместимом режиме так, как в объекто-ассистированом режиме.

    Если отчеты должны работать и в обратно совместимом режиме и режиме объектно-ассистированном, или если они разработаны в версии 9.0, но должны работать в более ранних версиях, ограничивайте ваш выбор значениями для сглаживания фигур теми, которые разрешены в "родном" Диалоговом окне Округления Прямоугольника . Если Вы используете Вкладку Стилей, Диалоговое окно Свойств элемента управления Отчета (Построитель Отчетов) для проектирования таких отчетов, используйте значения 12, 16, 24, 32, и 99, для представления "родных" кнопок, выбирая кнопки слева направо. Значение по умолчанию в диалоговом окне Round Rectangle (вторая кнопка) - 16.

  • Когда Вы создаете Быстрый Отчет, используя CREATE REPORT - Быстрая Команда Отчета или вызывая опцию Quick Report в меню Report, и если Вы имеете установку SET REPORTBEHAVIOR 90 , элементы раскладки, созданные Reportом Designer приобретают другие размеры, в отличие от созданных для тех же самых полей, в предыдущих версиях. Это изменение управляет дополнительной шириной, которая требуется новым механизмом рендеринга отчета.

  • Если Вы используете инструкции команд KEYBOARD или PLAY MACRO , чтобы обратиться к вариантам меню Report, Вы, возможно, должны пересмотреть комбинации клавиш в этих инструкциях, поскольку меню было реорганизовано.

  • Отчеты могут занять больше времени, чтобы открыться в Reportе Designer, если отчет был предварительно сохранен с разрешенной установкой Printer Environment. Вы можете ускорить выполнение, снимая выбор пункта меню Printer Environment в меню Report и пересохраняя отчет. Сохранение Printer Environment не является критическим для того, чтобы отчет функционировал и типично не рекомендуется. Объектно-ассистированный режим отчета также учитывает разные параметры настройки разрешающей способности принтеров, поэтому сохранение информации разрешающей способности для одного принтера в вашем отчете может иметь неблагоприятные эффекты в среде с принтерами, которые имеют другие разрешающие способности. Сохранение Printer Environment может также иметь более неблагоприятный эффекты для команд REPORT FORM или LABEL , вызванных опцией TO FILE , чем они имели в предыдущих версиях, когда ассоциированные настройки принтера не доступны в среде во время выполнения. В Visual FoxProе 9, глобальное значение по умолчанию для этой установки в Reports Tab, Options Dialog Box , и для отчетов, созданных в исполняемых приложениях (.exe файлы), было снято (изменено на uncheck).

  • Из-за изменений в способе которым Visual FoxPro 9 использует текущие параметры настройки принтера, чтобы определить элементы типа разрешающей способности печати и высоты страницы динамически, команды REPORT FORM или LABEL не будут работать в объектно-ассистированном режиме, если нет никаких доступных установок принтера в окружении или если блок подкачки информации (spooler) для печати был остановлен. Вы получите Ошибка загрузки драйвера принтера (Ошибка 1958) . Если Вам необходимо выполнить отчеты в окружении без информации о принтере, возможно, создавая настраиваемые типы вывода, которые не требуют принтера, Вы можете обеспечить Visual FoxPro минимальным набором информации, необходимой для выполнения вашего отчета, обеспечивая данные высоты страницы и ширины страницы из соответствующих методов Report Listener. Для подробной информации, см. GetPageHeight Метод и GetPageWidth Метод .

  • По умолчанию, и в соответствии с дизайном, Приложение Построителя Отчета автоматически не показывает таблицы в Среде Данных отчета, когда Вы формируете выражения отчета. Для большей безопасности сессий проектирования конечным пользователем, только таблицы, которые Вы явно открыли, а не все таблицы из DataEnvironment, доступны в Построителе выражений. Благодаря этому изменению, Вы имеете возможность настроить данные сеанса проектирования строго таким способ, которым Вы хотите, чтобы конечный пользователь их видел, прежде, чем будет выполнена Команда MODIFY REPORT в вашем приложении. Если Вы предпочитаете старое поведение Report Designer, Вы можете изменить поведение Приложения Построителя Отчета для его эмуляции. Для подробной информации, см. Как: Заменить Диалоговое окно Построителя выражений в Построителе Отчетов .

  • ASCII ключевое слово команды REPORT FORM указывается после параметра <filename> предложения TO FILE <filename> . В более ранних версиях Visual FoxPro, Вы могли безопасно использовать вместо этого неправильный и неподдерживаемый синтаксис TO FILE ASCII <filename> . Этот неправильный синтаксис вызывает ошибку в Visual FoxProе 9. Обратите внимание что ключевое слово ASCII не оказывает никакого эффекта на объектно-ассистированный режима вывода, поддерживаемый Механизмом Отчета, хотя Объект ReportListener может быть проинструктирован для осуществления этого.

  • Ключевое слово NOCONSOLE не имеет никакого значения по умолчанию в объектно-ассистированном режиме репорта, потому что ReportListeners не направляет его вывод в текущее окно вывода по умолчанию. Однако, ReportListener может эмулировать обратно совместимый режим в этой части, если потребуется. Обратитесь к Методу OutputPage для получения полного примера.

  • Чтобы облегчения разработки расширений для run-time отчетов, Механизм Отчета теперь разрешает нормальные процедуры отладки во время выполненного отчета. Если ваша подпрограмма обработки ошибок считает необходимым приостановку отчета, это будет теперь осуществляться. Обратитесь к Обработке Ошибок во время Выполнения Отчета для детального взгляда на связанные с этим изменения, и некоторых предложений для выбора стратегии.

  • Команда REPORT FORM и Команда LABEL автоматически больше не запрещаются как команды связанные с интерфейсом пользователя в объектах COM, откомпилированных в DLLs, когда Вы выполняете команды в объектно-ассистированом режиме. Ограничения все еще касаются этих команд, когда они - работают в обратно совместимом режиме. (Тема Выбор Типа Процессов объясняет, почему команды связанные с интерфейсом пользователя запрещены в DLLs.) Это изменение не является применимым к многопоточным DLLs. Множество возможностей связанных с интерфейсом пользователя также не доступно в DLLs (является ли она одно - или многопоточной). Например, выполнение Функции TXTWIDTH () и Метода TextWidth зависит от дескриптора окна, поэтому они не доступны в DLL. CREATE REPORT - Команда Быстрого Отчета полагается на те же самые средства как и TXTWIDTH() , и поэтому не доступна в DLL. Однако, во многих экземплярах, создавая настраиваемый вывод через использование ReportListener, не требуется никакой деятельности интерфейса пользователя, так команды REPORT FORM или LABEL могут теперь продуктивно использоваться в DLL. Рекомендуется использование функции SYS(2335) - Режим Автоматического Сервера для отслеживания потенциальных модальных состояний, так же как новой команды SET TABLEPROMPT . Обратитесь к Рассмотрению Настройки Сервера и Ограничениям для подробной информации.

  • Изменения произошли с обработкой заголовков группы и нижних колонтитулов в многоколоночных отчетах, когда столбцы располагаются слева направо ( раскладка label-style ). Пересмотренное поведение стало более полезным и ведет себя более предсказуемо с новым заголовком области данных и полосами нижнего колонтитула. Для объяснения изменений, см. Как: Задать Столбцы в Отчетах .

  • В предыдущих версиях, ключевое слово NOWAIT команд REPORT FORM и LABEL не являлось значимым, когда команды запускались в окне Command, а не в программе. В Visual FoxPro 9, в объектно-ассистированном режиме, когда команды предварительного просмотра интерпретируются Приложением Предварительного просмотра Отчета, это ключевое слово, существенно, независимо от того, где Вы запускаете команду. Приложение Предварительного просмотра Отчета использует ключевое слово NOWAIT , последовательно, как инструкцию для обеспечения немодальной формы предварительного просмотра. Для подробной информации о Приложении Предварительного просмотра Отчета, см. Расширение Функциональности Предварительного просмотра Отчета .

  • Visual FoxPro 8 использовал ключевое слово NOPAGEEJECT команд REPORT FORM и LABEL , но применял это ключевое слово только к печати вывода. В Visual FoxPro 9, NOPAGEEJECT имеет значение для всех адресатов вывода, включая PREVIEW . Это ключевое слово обеспечивает последовательное или продолжающееся выполнение отчета для множественных команд REPORT FORM и LABEL . Для облегчения этого поведения в режиме предварительного просмотра, и для разрешения применять команды настройки к множественным предварительным просмотрам, Приложение Вывода Отчета кэширует отдельный экземпляр объекта ReportListener для вывода предварительного просмотра, вызывая изменение в поведении для множественных немодальных команд отчета ( REPORT FORM … PREVIEW NOWAIT ). В прошлом Вы использовали множественные команды REPORT FORM… PREVIEW NOWAIT последовательно, ваши команды приводили к открытию множества окон предварительного просмотра отчетов. В Visual FoxProе 9, при установке SET REPORTBEHAVIOR 90 , эти команды приведут к последовательным предварительным просмотрам отчета, направляемым в единственное окно предварительного просмотра отчета.

    Совет:
    Вы можете легко инициировать старое поведение, создавая множественные ссылки объекта ReportListener и связывая её с каждый отдельной командой REPORT FORM или LABEL , используя используя ключевое слово OBJECT . Для подробной информации об использовании синтаксиса OBJECT , см. Команду REPORT FORM . Для информации о получении множественных объектных ссылок соответствующего типа из Приложения Вывода Отчета, смотри Понимание приложения Вывода Отчета .

  • В процессе рассмотрения и перестройки "родного" Механизма Отчета, обращалось внимание на множество недоделанных проблем относительно полосы отчета и позиционирования элементов раскладки. Например, элемент поля, отмеченный, чтобы растягиваться и принимать размеры высоты больше одной текстовой строки в раскладке отчета мог некстати переместить события выхода из полосы отчета на следующую страницу в Visual FoxPro 8. В Visual FoxProе 9, события выхода из полосы происходят на той же самой странице. Дополнительные пересмотры улучшают обработку указателя записи в полосах нижнего колонтитула, когда полосы раздвигаются поперек страницы. Эти изменения не являются специфичными только для объектно-ассистированной обработки. Если Вы использовали недокументированное поведение, обеспечивая точное размещение полосы или раскладку элементов в конкретном отчете, Вы должны проверить поведения этого отчета в Visual FoxProе 9.

SQL SELECT Инструкции

  • Команда SELECT - SQL содержащая предложения DISTINCT и ORDER BY, в которых поле в ORDER BY не находится в cписке полей SELECT, генерирует ошибку в Visual FoxProе 9.0 с установкой SET ENGINEBEHAVIOR 90 (Ошибка 1808: SQL: предложение ORDER BY недопустимо.). Следующий пример показывает это:

    Скопировать код
    SET ENGINEBEHAVIOR 90
    CREATE CURSOR foo (f1 int, f2 int)
    SELECT DISTINCT f1 FROM foo ORDER BY f2 INTO CURSOR res
    
  • Команда SELECT - SQL содержащая предложение DISTINCT И HAVING, в которых поле в выражении HAVING не находится в cписке полей SELECT, теперь генерирует ошибку в Visual FoxPro 9.0 с SET ENGINEBEHAVIOR 90 (Ошибка 1803: SQL: предложение HAVING недопустимо.). Об ошибке сообщают, потому что поле в HAVING не находится в обработке, но при этом используется DISTINCT. Следующий пример показывает это:

    Скопировать код
    SET ENGINEBEHAVIOR 90
    CREATE CURSOR foo (f1 int, f2 int)
    SELECT DISTINCT f1 FROM foo HAVING f2>1 INTO CURSOR res
    
  • Количество инструкций UNION, которые могут использоваться в Команде SELECT - SQL больше не ограничено 9. Круглые скобки полностью не поддерживаются с инструкциями UNION, и в отличие от предыдущих версий могут генерировать ошибку. Если две или больше инструкции SELECT включены в круглые скобку, генерируется ошибка во время компиляции (Ошибка 2196: Только одна инструкция SQL SELECT может быть включена в круглые скобки.). Это поведение не привязано ни к какому уровню Команды SET ENGINEBEHAVIOR . Следующий пример показывает эту ошибку:

    Скопировать код
    SELECT * FROM Table1 ;
      UNION ;
      (SELECT * FROM Table2 ;
      UNION ;
      SELECT * FROM Table3)
    
    Следующий пример компилируется без ошибки:

    Скопировать код
    SELECT * FROM Table1 ;
      UNION ;
      (SELECT * FROM Table2) ;
      UNION ;
      (SELECT * FROM Table3)
    

Для подробной информации, см. Команда SET ENGINEBEHAVIOR .

Отключение Операций TABLEREVERT( ) во время Операции TABLEUPDATE( )

Для CursorAdapters , Visual FoxPro не разрешает операции TABLEREVERT( ) во время выполнения операций.

Для подробной информации, см. TABLEREVERT () Функция и TABLEUPDATE () Функция .

Усечение Индексного Ключа во время Обновления Индекса

Теперь генерируется Ошибка (Ошибка 2199), когда должно произойти усечение индексного ключа, обычно во время создания или модификации индекса. Это может случиться с использованием ключа, который содержит выражение с использование Memo-поле, чья длина не фиксирована, как в следующем примере:

INDEX ON charfld1 + memofld1 TAG mytag

Подобные проблемы могут также произойти с SQL механизмом (как при исполнении команды SQL SELECT или View creation), когда возможна неудача при формировании временного индекса для оптимизации объединения (join), если невозможно точно определить максимальный размер ключа.

Для подробной информации, см. Ошибка Создания Ключа для индекса "name". (Ошибка 2199) .

Повреждение Memo-поля

Visual FoxPro теперь обнаружит, если Memo поле в библиотеке классов (.vcx) или форме (.scx) испорчено, когда Вы пробуете открыть этот файл в Проектировщике. Если файл содержит испорченное Memo-поле, происходит следующая Ошибка 41:

Memo file <path>\myclass.VCT is missing or is invalid.

Дополнительно, подобные ошибки мемо могут произойти, если таблица Visual FoxPro открыта и Вы пробуете обратиться к содержанию испорченного мемо. Следующий типовой код показывает, как Вы можете обнаружить Ошибку 41 поврежденного файла мемо:

Скопировать код
TRY
  USE myTable EXCLUSIVE NOUPDATE
  SCAN
    SCATTER MEMO MEMVAR
  ENDSCAN
CATCH TO loError
  IF loError.ErrorNo=41
    * handle error here
  ENDIF
ENDTRY
USE IN myTable

В то время как потеря данных возможна, следующий типовой код может помочь в восстановлении части или целого файла:

Скопировать код
ON ERROR *
USE myclass.vcx
COPY TO myclass_bkup.vcx&&backup
COPY TO myclass2.vcx
USE
DELETE FILE myclass.vc*
RENAME myclass2.vcx TO myclass.vcx
RENAME myclass2.vct TO myclass.vct
COMPILE CLASSLIB myclass.vcx
ON ERROR

Поддержка Визуальных Форм и Класса Расширенных Свойств

Visual FoxPro 9 позволяет Вам создавать настраиваемые свойства в вашем визуальном классе (SCX или VCX файл), чьи значения могут содержать переводы каретки и/или превышать размер в 255 символов. Если Вы определяете свойство со значением подобно этому через Окно Свойств (например, диалоговое окно Zoom), Visual FoxPro будет хранить это в таком формате, что Вы больше не будете иметь возможность редактировать этот класс в старших версиях Visual FoxPro.

Определения Класса

Возможность установить назначение свойства в экземпляре объекта больше не поддерживается в определении класса и генерирует ошибку. Следующий пример показывает это.

Скопировать код
LOCAL oCustom
oCustom = CREATEOBJECT('cusTest')
DEFINE CLASS cusTest AS CUSTOM
    oRef = CREATEOBJECT('myclass')
ENDDEFINE
DEFINE CLASS myclass AS CUSTOM
ENDDEFINE

Вы можете вместо этого назначить свойство ссылке экземпляра объекта в событии Init вашего класса.

Подключаемые Модули для Редистрибьюции Компонентов

Visual FoxPro включает модули (MSM файлы) для использования в редистрибьюции разделяемых компонентов совместно с вашими исполняемыми приложениями. подключаемые Модули используются приложениями, которые могут создать программу установки на основе инсталлятора Windows. Например, Visual FoxPro поставляется с подключаемыми модулями, которые содержат библиотеки поддержки Visual FoxPro так же как некоторые общие компоненты, включая множество контролов Activex.

Для Visual FoxPro 9, модуль VFP9RUNTIME.MSM содержит библиотеки поддержки, в которых Вы будете нуждаться для вашего заказанного дистрибутивного приложения. Модуль VFP9RUNTIME.MSM зависит от модулей, содержащих Microsoft VC 7.1 библиотеку поддержки (MSVCR71.DLL) и GDI+ графическую библиотеку (GDIPLUS.DLL). Из-за этих зависимостей, если Вы указываете модуль VFP9RUNTIME.MSM в инструментах инсталлятора Windows, типа InstallShield, другие связанные модули будут включены автоматически.

Примечание Для Windows XP и более поздних операционных систем, Visual FoxPro использует графическую библиотеку GDI+, которая установлена в вашей Системной папке Windows.

Для Visual FoxPro 9, модули подключения, содержащие библиотеку поддержки VC больше не устанавливаются в каталоге Windows System. Вместо этого, этот файл установлен в каталоге вашего приложения. Это сделано в соответствии с рекомендованной стратегией поддержки версий компонентов для операционных систем Windows. библиотека GDI+ установлена в том же самом каталоге где установлены ваши библиотеки поддержки Visual FoxPro и инсталлируется только на операционных системах более поздних, чем Windows XP (XP уже включает библиотеку GDI+ в каталог Windows System).

Совет Могут появиться обстоятельства, когда Вы пожелаете установить библиотеки VC или GDI+ в место, отличное от каталога Windows System. Вы можете сделать это в вашем приложении Windows Installer (например, InstallShield) отмечая нужный подключаемый модуль перед выбором самого модуля VFP9RUNTIME.MSM. Как только Вы выбрали подключаемый модуль, Вы можете изменить его инсталляционный путь.

Существую новые модули для компонентов синтаксического анализатора MSXML3 и MS XML4 XML. Компонент MSXML 3.0 состоит из следующих модулей подключения:

  • MSXML 3.0 (msxml3_wim32.msm)

  • Msxml3 Exception INF Merge Module (msxml3inf_wim32.msm)

  • WebData std library (wdstddll_wim32.msm)

Есть два модуля MSXML 4.0, которые должны быть включены с любым пользовательским сетапом:

  • MSXML 4.0 (msxml4sxs32.msm)

  • MSXML 4.0 (msxml4sys32.msm)

MTDLL Memory Allocation

Visual FoxPro содержит новую установку PROGCACHE в файле конфигурации, которая определяет объем памяти, который Visual FoxPro запрашивает при запуске для выполнения программы (кэш программы). Эта установка также определяет память, выделяемую для потока Visual FoxPro MTDLL COM Серверов. В предыдущих версиях, эта установка не конфигурировалась, и память была выделена как фиксированный кэш программы, немногим превышающий 9MB (144 * 64K). Новая настройка PROGCACHE позволяет Вам устанавливать точный размер кэша программы или указывать что будет используется динамическое распределение памяти.

Так как MTDLL COM Серверы могут расходовать большой объем памяти, если создается много потоков, то становится важным чтобы память была распределена более эффективно для таких сценариев. В Visual FoxPro 9, новый параметр по умолчанию для MTDLL COM Серверов - -2 (динамическое распределение памяти). Для подробной информации, см. Специальные Термы для Файлов конфигурации .

Разные Изменения

Следующие изменения - разные изменения, о которых Вы должны знать, но вряд ли они будут влиять на выполнение существующего кода.

Изменения CursorAdapter

В текущей версии Visual FoxPro, следующие изменения поведения относятся к объекту CursorAdapter:

Поддержка SetFocus Грида для AllowCellSelection

Вы можете теперь вызвать Метод элемента управления в Гриде SetFocus и заставить грид, получить фокус когда свойство AllowCellSelection установлена в Ложь (.F). и грид не содержит никаких записей.

EXECSCRIPT Функция

EXECSCRIPT () Функция теперь позволяет Вам передавать параметры по ссылке.

Дополнительно, Visual FoxPro 9.0 усиливает проверку правильности синтаксиса запросов, сделанных при конкатенации параметров. Следующий код, который работал в предыдущих версиях Visual FoxPro, теперь вызывает ошибку, потому что символ CHR(13) разбивает запрос на две строки, тогда как предполагается, это является частью параметра для запроса EXECSCRIPT .

Скопировать код
  cRecPauseScript = "EXECSCRIPT('" + ;
    "?123" + CHR(13) + ;
    "?456" + ;
    "')"
  _VFP.DoCmd(cRecPauseScript)

Чтобы сделать допустимый запрос, который не вызывает синтаксической ошибки, Вы может использовать следующий код:

Скопировать код
  cRecPauseScript = "EXECSCRIPT('?123'+CHR(13)+ '?456')"
  _VFP.DoCmd(cRecPauseScript)

Событие Щелчка Элемента управления Listbox

В текущей версии Visual FoxPro клавиши PageUp, PageDown, Home и End клавиатуры теперь вызывают срабатывание события click элемента управления Listbox . В предыдущих версиях, эти клавиши не вызывали событие Щелчка, в отличие от клавиш со стрелками.

Функция PEMSTATUS( ) Возвращает Ложь для Скрытых Родных Свойств

В предыдущих версиях Visual FoxPro, PEMSTATUS( ) функция возвращала Истину (.T). для скрытых родных свойств базовых классов Visual FoxPro при определении значения 5 для nAttribute . В текущей версии, PEMSTATUS( ) возвращает Ложь (.F). для этих скрытых родных свойств. Для подробной информации, см. PEMSTATUS( ) Функция .

Изменения в Диалоговом окне Options

  • В диалоговом окне Options, опция Вывести количество мониторов была перемещена из вкладки Editor во вкладку View. Для подробной информации, см. View Tab, Options Dialog Box .

  • В предыдущих версиях Visual FoxPro, Вы могли вывести все параметры настройки в Диалоговое окно options (Visual FoxPro) в Окне Command, нажимая клавишу SHIFT при выборе кнопки OK закрытия диалога. В текущей версии, эти параметры настройки теперь посылаются в окно Debug Output Window . Окно Debug Output должно быть открыто для получения параметров настройки, которые будут туда направлены.

FOXRUN.PIF

Файл FOXRUN.PIF, который используется Командой RUN |! больше не устанавливается в корневом каталоге Visual FoxPro. Если Visual FoxPro обнаруживает присутствие файла FOXRUN.PIF во время выполнения команды RUN, он будет использовать COMMAND.COM для выполнения указанной команды RUN. Она может быть нежелательной программой SHELL в условиях конкретной операционной системы, особенно для более новой, нежели Windows XP операционной системы, в которой использование CMD.EXE является предпочтительным.

Текущее поведение для команды RUN без наличия файла FOXRUN.PIF заключается в том, что команда RUN будет использовать программу SHELL, указанную переменной среды COMSPEC операционной системы. В ОС Windows XP, Вы можете просматривать и редактировать эту переменную, щелкая правой кнопкой мыши по значку My Computer вашего рабочего стола и выбирая диалоговое окно Properties (вкладка Advanced).

Файл FOXRUN.PIF пока доступен в каталоге Tools, если Вы нуждаетесь в нем по специфическим причинам.

Для подробной информации, см. RUN |! Команда .

SCATTER Команда

SCATTER больше не учитывает неоднозначное использование обоих предложений MEMVAR и NAME в одной и той же команде. Вы можете только включить одно из этих предложений. В предыдущих версиях, следующий код не генерировал бы ошибку:

Скопировать код
USE HOME()+"SAMPLES\Data\customer.dbf"
SCATTER MEMVAR NAME oCust

Для подробной информации, см. SCATTER Команда .

SET DOHISTORY

Команда SET DOHISTORY, которая включена для обратной совместимости, была модифицирована для того, чтобы направлять вывод в окно Debug Output Window вместо окна Command как в предыдущих версиях.

SCREEN ShowTips Свойство

Значение по умолчанию для свойства _SCREEN ShowTips было изменено от Лжи (.F). к Истине (.T).. Это изменение было сделано, потому что новая поддержка подсказок Полей и полей МЕМО теперь зависят от этой установки.

AllowCellSelectionDoes Не Разрешает Удалять Строки Грида при Установке в Ложь

Когда Свойство AllowCellSelection установлено в Ложь (.F). для элемента управления Grid , Вы не можете пометить строку для удаления, щелкая в области столбца удаления. Для подробной информации, см. Свойство AllowCellSelection .

База данных Northwind

Пример базы данных Northwind был модифицирован. Пять из хранимых процедур теперь включают запросы Функции SETRESULTSET() так, чтобы Visual FoxPro OLE DB Provider возвратил курсор, когда они выполняются.

Фундаментальные классы

Класс _ShellExecute, содержавшийся в библиотеке классов FFC _Environ.vcx был модифицирован, чтобы включить дополнительный параметр в метод ShellExecute.

Wizards and Builders

Диалоговое окно выбора Wizard/Builder теперь должным образом скрывает удаленные записи в таблицах Мастера и регистраций Построителя.

Определение значения Начертаний Западных Языков для Функции GETFONT()

В версиях до этой версии, передача 0 как значения nFontCharSet для GETFONT( ) открывает диалоговое окно Font Picker и отображает список начертаний как недоступный. Вы не могли определить 0 (Западный), как значение начертания, и выбор 1 (Задано по умолчанию) устанавливал nFontCharSet к заданному по умолчанию шрифту, который определялся операционной системой.

В этой версии, передача 0 в GETFONT( ) открывает диалоговое окно Font Picker с доступным списком начертаний, и значением, установленным в Западный вариант. Возвращаемое значение для GETFONT( ) также включает возвращаемое значение для nFontCharSet .

Удаленные Элементы

Справка HTML SDK

Справка HTML 1.3 SDK больше не поставляется с Visual FoxPro.

См. Также