Кнопки формы в 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 |