Распечатать страницу

Кнопки формы в Visual FoxPro

« Назад

Все кнопки формы имеют процедуры-обработчики события Click.

&& Обработчик события Click кнопки "Очистить"

&&

with ThisForm

&& Очищаем массив FormArray

store .F. to .FormArray

&& Обнуляем значение свойства RowSource поля списка ListArray

.ListArray.RowSource = .NULL.

&& Кнопки "Очистить", "Записать" и "Сортировать",

&& когда поле списка очищено, должны быть недоступны

.CommandClear.Enabled = .F.

.CommandSave.Enabled = .F.

.CommandSort.Enabled = .F.

&& Кнопка "Заполнить" становится доступной

.CommandFill.Enabled = .T.

&& Обновляем форму. В принципе, вызов этого метода избыточен

.Refresh

endWith

После очистки доступны только две кнопки: "Заполнить" и "Закрыть". Первая обеспечивает заполнение массива целыми случайными числами из диапазона 0 – 9 и управляет доступностью кнопок формы:

&& Обработчик события Click кнопки "Заполнить"

&&

with ThisForm

&& Заполняем массив FormArray целыми случайными числами

for ind = 1 to Alen(.FormArray)

    .FormArray[ind] = Int(10 * Rand( ))

endFor

&& Восстанавливаем значение свойства RowSource поля списка

.ListArray.RowSource = "ThisForm.FormArray"

&& Регулируем доступность кнопок

.CommandClear.Enabled = .T.

.CommandSave.Enabled = .T.

.CommandSort.Enabled = .T.

&& После заполнения кнопка "Заполнить" недоступна

.CommandFill.Enabled = .F.

endWith

При нажатии на кнопку "Записать" активизируется диалог "Сохранить как", и если введено имя файла и получено подтверждение на запись данных, то элементы массива будут переписаны в указанный текстовый файл.

&& Обработчик события Click кнопки "Записать"

&&

fileName = PutFile("Введите имя файла", "d:\FormArray.txt", "TXT")

&& Символьная переменная fileName  с именем файла пуста, если в диалоге

&& "Сохранить как"нажата кнопка "Отмена" или если не получено подтверждения

&& на перезапись существующего файла. Такое подтверждение понадобится,

&& если указанный в диалоге файл уже существует

if Len(fileName) > 0 then

h = Fcreate(fileName)

&& Вывод заголовка

Fputs(h, "Массив, отображаемый в форме ArrayShow")

&& Построчный вывод массива

for iRow = 1 to Alen(ThisForm.FormArray, 1)

    && Формируем из элементов строки массива строку текстового файла

    arrayRow = ""

    for iCol = 1 to Alen(ThisForm.FormArray, 2)

    arrayRow = arrayRow + Str(ThisForm.FormArray[iRow, iCol], 2)

    endFor

    Fputs(h, arrayRow)

endFor

Fclose(h)

&& Сообщаем о результате

wait "Готово!" window nowait

endif

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

Массив, отображаемый в форме ArrayShow

Обработчик события Click кнопки "Сортировать" вызывает функцию ASORT( ), предварительно вычисляя значения ее параметров:

&& Обработчик события Click кнопки "Сортировать"

&&

with ThisForm

&& Номер сортируемого столбца задается свойством Value объекта "Счетчик"

nColumnNumber = .SpinnerColumnNumber.Value

&& Номер первого элемента выбранного столбца

nStartElement = Aelement(.FormArray, 1, nColumnNumber)

&& Число элементов в столбце массива FormArray

nNumberSorted = Alen(.FormArray, 1)

&& Порядок сортировки (возрастающая или убывающая) задается

&& элементом управления "Переключатель" с именем OptionGroupSortOrder

nSortOrder = .OptionGroupSortOrder.Value – 1

Asort(.FormArray, nStartElement, nNumberSorted, nSortOrder)

&& Обновляем форму. Вызов этого метода в данном обработчике обязателен

.Refresh

endWith

Обработчик события Click кнопки "Закрыть" имеет всего один оператор:

&& Обработчик события Click кнопки "Закрыть"

&&

ThisForm.Release

Замечание. Открытую активную форму можно закрыть из любого программного компонента, употребив метод Release свойства ActiveForm системной переменной _VFP или _SCREEN:

_VFP.ActiveForm.Release

_SCREEN.ActiveForm.Release