Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.6 Mб
Скачать

Содержимое строки массива, формируемого afields( )

Номер столбца

Что содержит

Тип данных

1

Имя поля

Character

2

Символ, характеризующий тип поля (C – Character, D – Date, L – Logical, M – Memo, N – Numeric, F – Float, I – Integer, B – Double, Y – Currency, T – DateTime, G – General, Q – Varbinary, V – Varchar and Varchar (Binary), W – Blob)

"

3

Длина поля

Numeric

4

Число десятичных знаков

"

5

Разрешение для NULL-значения

Logical

6

Запрет на изменение кодовой страницы

"

7

Выражение проверки поля

Character

8

Текст проверки поля

"

9

Значение поля по умолчанию

"

10

Выражение проверки таблицы

"

11

Текст проверки таблицы

"

12

Длинное имя таблицы

"

13

Выражение триггера вставки

"

14

Выражение триггера обновления

"

15

Выражение триггера удаления

"

16

Комментарий таблицы

"

17

Следующее значение автоматически увеличиваемого поля

Numeric

18

Шаг для автоматического увеличения значения поля

"

Замечание. Аналогичная информация содержится в полях таблицы, получаемой командой COPY STRUCTURE EXTENDED. Используя эти данные новая таблица создается командой CREATE FROM.

Функция

AFONT(ArrayName [, cFontName [, nFontSize | nFontCharSet [, nFlags]]]) )

помещает информацию о доступных шрифтах в массив ArrayName. Возвращает .T., если массив благополучно сформирован, или .F. – в противном случае. Формируемый массив является одномерным. Если задан только параметр ArrayName, то массив заполнится именами доступных шрифтов.

Параметры:

cFontName – имя шрифта, информация о котором помещается в массив. Если шрифт недоступен, то AFONT( ) вернет .F. Если шрифт может принимать дискретные размеры (8, 10, …), то массив будет заполнен возможными значениями размеров шрифта, число элементом массива будет равно числу возможных размеров шрифта. Если шрифт поддерживает дробные размеры, то массив будет состоять из 1-го элемента, равного –1. Тип параметра – Character.

nFontSize – задает размер шрифта cFontName (nFlags отсутствует или равен нулю). Если указанный параметром nFontSize размер шрифта возможен, то массив будет иметь 1 равный .T. элемент и AFONT( ) вернет .T. Если же невозможен, то массив сформирован не будет и AFONT( ) вернет .F. Если параметр отсутствует или равен –1, то массив в случае дискретного шрифта cFontName заполнится возможными значениями его размеров, в случае недискретного в массиве будет 1 равный –1 элемент. Тип параметра – Numeric.

nFontCharSet – задает набор символов шрифта cFontName (nFlags отличен от нуля). Если указанный параметром nFontCharSet набор символов возможен, то массив будет иметь 1 равный .T. элемент и AFONT( ) вернет .T. Если же невозможен, то массив сформирован не будет и AFONT( ) вернет .F. Тип параметра – Numeric.

nFlags – если отсутствует или равен 0, то третий параметр интерпретируется как nFontSize, и – как nFontCharSet – в противном случае. Если nFlags отличен от нуля и nFontCharSet равен –1, то массив заполняется возможными наборами шрифтов.

Замечание. Для выбора шрифта или просмотра списка возможных шрифтов используется функция GETFONT( ).

Пример. Выводятся имена всех дискретных шрифтов. Для первого дискретного шрифта выводятся допустимые размеры и номера доступных наборов символов.

&& Помещаем имена доступных шрифтов в массив fontNamesArray

if Afont(fontNamesArray) then

firstDFont = .T.

for fontNumber = 1 to Alen(fontNamesArray)

&& Имя шрифта

fontName = fontNamesArray(fontNumber)

&& Помещаем информацию о возможных размерах шрифта в массив fontSizeArray

Afont(fontSizeArray, fontName)

if fontSizeArray(1) != –1 then

&& Печатаем имя дискретного шрифта

? fontName

if firstDFont then

firstDFont = .F.

&& Для первого дискретного шрифта массива fontNamesArray

&& печатаем возможные размеры

display memory like fontSizeArray

&& Затем печатаем номера возможных наборов символов

Afont(fontSetArray, fontName, –1, 1)

display memory like fontSetArray

endif

endif

endFor

endif

Возможный результат:

Courier

FONTSIZEARRAY

Priv

A

test

( 1)

N

10

( 10.00000000)

( 2)

N

12

( 12.00000000)

( 3)

N

15

( 15.00000000)

FONTSETARRAY

Priv

A

test

( 1)

N

204

( 204.00000000)

Fixedsys

FoxFont

FoxPro Window Font

MS Sans Serif

MS Serif

Small Fonts

System

Terminal

В представленном результате Priv является сокращением Private.

Функция

AGETCLASS(ArrayName [, cLibraryName [, cClassName [, cTitleText [, cFileNameCaption [, cButtonCaption]]]]])

отображает библиотеки классов и диалоге "Открыть" и создает одномерный массив ArrayName из двух элементов. Первый элемент массива содержит имя выбранной библиотеки классов, второй – имя выбранного класса. Возвращает .T., если класс выбран, или .F. – в противном случае.

Параметры:

cLibraryName – имя библиотеки классов, выбираемой в диалоге при его открытии. Параметр cLibraryName может быть именем визуальной (VCX) или программной (PRG) библиотеки классов или именем библиотеки базовых классоы. Если указано неверное имя или если cLibraryName – это пустая строка или NULL-значение, то возникнет ошибка исполнения.

cClassName - имя класса, выбираемого в списке классов при открытии диалога. Если класса с заданным именем нет, то в списке будет выбран первый класс. Если cLibraryName – это NULL-значение, то возникнет ошибка исполнения.

cTitleText – заголовок диалога "Открыть".

cFileNameCaption – заголовок поля ввода имени файла.

cButtonCaption – заголовок кнопки OK.

Пример. Открывается диалог выбора класса из библиотеки классов. Если выбран класс _arraylib из библиотеки классов _utility.vcx, то из двумерного массива формы 34 методом DelAitem класса _arraylib удаляется 2-я строка. Метод использует функцию ADEL( ), но в отличие от нее изменяет после удаления соответствующим образом форму массива.

&& Открываем диалог выбора класса

ClassLibraryName = 'c:\Program Files\Microsoft Visual FoxPro 9\Ffc\_utility.vcx'

AGetClass(aClassLib, ClassLibraryName, ;

"_arraylib", 'Выбор класса', 'Имя файла класса:', 'Выбрать')

&& Проверяем, выбран ли класс _arraylib

if AClassLib(2) = '_arraylib'

declare someArray(3, 4)

&& Инициализация массива

for k = 1 to 12

someArray(k) = k

endFor

&& Открываем библиотеку классов,

&& используя выражение с именем (aClassLib(1))

set classlib to (aClassLib(1)) alias utility

&& Создаем объект типа _arrayLib

oHandler = CreateObject('utility._arrayLib')

&& Удаляем 2-ю строку массива; массив передаем по ссылке

oHandler.DelAitem(@someArray, 2)

display memory like someArray

endif

Код метода DelAitem можно просмотреть, открыв соответствующую библиотеку:

modify class (AClassLib(2)) of (AClassLib(1))

Функция

AGETFILEVERSION(ArrayName, cFileName)

создает одномерный массив ArrayName, помещая в него информацию о файле cFileName. Тип параметра cFileName – Character. Функция возвращает размер сформированного массива ArrayName. Если файл cFileName не существует или не имеет версию Windows-ресурсов, функция вернет 0; массив ArrayName не будет создан или останется неизмененным.

Функция AGETFILEVERSION( ) используется для получения информации о файлах, содержащих версию Windows-ресурсов, таких, как EXE, DLL и FLL или файлов автоматизации, созданных в VFP.

Файл автоматизации будет иметь версию Windows-ресурсов, если в диалоге Project – Build – Version указан хотя бы 1 пункт.

Элементы массива ArrayName содержат следующие данные:

  • 1 – комментарий;

  • 2 – имя компании;

  • 3 – описание файла;

  • 4 – версия файла;

  • 5 – внутреннее имя;

  • 6 – права;

  • 7 – торговая марка;

  • 8 – оригинальное имя файла;

  • 9 – частное построение;

  • 10 – имя продукта;

  • 11 – версия продукта; формат этой величины зависит от версии VFP; детали см. в описании функции VERSION( );

  • 12 – специальное построение;

  • 13 – OLE-саморегистрация, если файл поддерживает саморегистрацию, или пустая строка – в противном случае;

  • 14 – язык;

  • 15 – код трансляции.

Пример:

fileName = "c:\Program Files\Microsoft Visual Studio\DF98\BIN\DF.EXE"

if AGetFileVersion(aFiles, fileName) > 0 then

for k = 1 to Alen(aFiles)

? k, " ", aFiles(k)

next

endif

Результат:

1

2 Compaq Computer Corporation

3 Compaq Visual Fortran Compiler Driver

4 6.6 - 1877 (Update A)

5 Compaq Visual Fortran 6.6-1877

6 Copyright 2001 Compaq Computer Corp.

7

8 df.exe

9

10 Compaq Visual Fortran

11 6.6 (Update A)

12

13

14 Английский (США)

15 040904b0

Замечание. В сокращенном варианте имя AGETFILEVERSION должно иметь не менее 5-и символов.

Функция

AINS(ArrayName, nElementNumber [, 2])

вставляет в массив ArrayName элемент, если массив одномерный, или строку или столбец, если массив двумерный.

Добавление элемента (строки, столбца) не изменяет формы массива. При вставке элементы сдвигаются по направлению к концу массива последний элемент (строка, столбец) из массива выпадают. Новый элемент или элементы новой строки (столбца) имеют значения .F.

Возвращает 1, если действие выполнено, или 0 – в противном случае.

Параметр:

nElementNumber – задает положение вставляемого элемента (строки, столбца). В случае одномерного массива новый элемент вставляется перед элементом nElementNumber. В случае двумерного массива новая строка (столбец) вставляется перед строкой (столбцом) с номером nElementNumber. При таком способе вставки номер нового элемента (строки, столбца) равен nElementNumber.

2 – обеспечивает в случае двумерного массива вставку столбца. При отсутствии параметра вставляется строка.

Пример. В массив oneDArray вставляется элемент, а в массив twoDArray – строка, а затем столбец. Значения новых элементов выводятся на экран.

dimension oneDArray(7), twoDArray(3, 4)

if set("COMPATIBLE") = "ON" then

set compatible off

endif

store .T. to oneDArray, twoDArray

nElementNumber = 2

&& Вставка второго элемента в одномерный массив oneDArray

Ains(oneDArray, nElementNumber)

? oneDArray(nElementNumber) && Напечатает: .F.

&& Переходим в окне вывода на новую строку

?

&& Вставка второй строки в двумерный массив twoDArray

aIns(twoDArray, nElementNumber)

&& Выводим значения элементов во вставленной строке

for iCol = 1 to 4

?? twoDArray(2, iCol) && Напечатает: .F. .F. .F. .F.

endFor

?

&& Вставка второго столбца в двумерный массив twoDArray

Ains(twoDArray, nElementNumber, 2)

&& Выводим значения элементов во вставленном столбце

for iRow = 1 to 3

?? twoDArray(iRow, 2) && Напечатает: .F. .F. .F.

endFor

Функция

AINSTANCE(ArrayName, cClassName)

размещает в массиве ArrayName информацию об экземплярах класса cClassName, созданных функциями CREATEOBJECT( ) или NEWOBJECT( ). Возвращает число элементов в сформированном массиве.

В качестве имени класса может быть указано имя как базового класса, так и созданного пользователем. Имена базовых классов VFP см. в табл. 13.2.

Пример.

public oFormA, oFormB

oFormA = CreateObject("OneButtonForm")

oFormB = CreateObject("OneButtonForm")

oFormA.Show

&& Формируем массив arrayIns

Ainstance(arrayIns, "OneButtonForm")

wait arrayIns(1) + ', ' + arrayIns(2) window

&& Создаем класс OneButtonForm – форму с одной кнопкой

define class OneButtonForm as Form

endDefine

Сообщение WAIT WINDOW:

Функция

ALANGUAGE(ArrayName, nType)

формирует массив ArrayName, содержащий имена всех доступных в VFP команд, функция, базовых классов или DBC-событий. Содержание и форма результирующего массива определяются параметром nType. Варианты возвращаемых результатов приведены в табл. 6.11.

Таблица 6.11

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]