
- •Тема 5. Разработка пользовательского интерфейса.
- •5.1. Средства быстрой разработки приложений.
- •5.2. Сложные системы. Методы их декомпозиции.
- •5.3. Создание классов разработчика.
- •5.4. Язык sql. Sql – запросы.
- •Sql – запросы.
- •Запрос 1. Простые запросы.
- •Запрос 2.Сложные условия поиска.
- •Сортировка результатов.
- •Запросы с подзапросами
- •5.5. Работа с “Word”, “Excel” и ActiveX
- •Понятие о com-клиенте и com-сервере
- •Vtf как com-клиент.
- •Листинг программы экспорта в Word
- •Основные структуры программы.
- •Комментарии к каждой строке листинга
- •Листинг программы экспорта в Excel
- •ActiveX → Календарь
- •Основные структуры программы.
- •Комментарии к каждой строке листинга
- •Листинг программы экспорта в Excel
- •ActiveX → Календарь
- •Процедура определения календарной даты
- •5.6. Визуальные средства проектирования.
- •5.6.1. Мастера.
- •5.6.2. Конструкторы.
- •5.6.3. Построители.
Комментарии к каждой строке листинга
- создается локальная переменная, используемая только в рамках этой процедуры
- создается COM-объект Word и ему присваивается имя локальной переменной loWord
- устанавливается свойство объекта loWord не выдавать предупреждающих сообщений
- создается новый документ Word
по 58) - команда WITH … ENDWITH работает с объектом loWord
- открываем наш документ Word
по 57) - команда WITH … ENDWITH работает внутри объекта loWord
- жирное начертание текста
- размер шрифта
- тип шрифта
- выравнивание текста по центру
- вывод текста в скобках на экран
по 16) - задание свойств для печати после вывода текта “Динамика выполнения дипломного проектирования на кафедре ИТС ”
- открытие таблицы rukovoditely из базы данных data1
- выбор атрибутов для отображения результатов запроса, функция “TRIM” возвращает выражение без концевых пробелов
указание на таблицу и базу данных к которой формируется запрос
- Оператор сортировки по номеру группы и по фамилии
- into – оператор указывает, где следует хранить результаты запроса, ARRAY – массив а
- переменная TALLY содержит количество записей, обработанной последней табличной командой, т.е. это число записей, отображенных из таблицы rukovoditely
- переход на новый абзац
- пустая строка (пропуск)
по 26) - создаем две переменные и присваиваем им значение количества строк и столбцов в массиве а с помощью функции VTF Alen()
- создаем с помощью метода Add (VisBas) таблицу с rowsCount+1 строками (+1 – строка для шапки таблицы, rowsCount – для данных) и colsCount столбцами
- создаем переменную T и присваиваем ей текущую таблицу с помощью метода (VisBas) – Tables(1)
- работаем с переменной T (таблица)
по 39) - с помощью функции .cell (N_строки, N_столбца), свойства Text и Bold создаем в Word шапку таблицы
- создаем переменную j для работы с номером строк
(первая строка таблицы уже создана операторами 30)-39), работаем со 2-ой строки)
- организуем начало цикла для управления строкам таблицы от 2-ой строки до rowsCount+1
по 46) - последовательно заполняем 5 ячеек каждой строки таблицы в Word из массива а
конец цикла FOR
окончание тела команды WITH задающей свойства объекта T (оператор 29))
снимает в операторе 7) добавление .Selection
переход на новый абзац
удаляет из памяти массив а
если условие, указанное в строке 22) не выполняется, то
по 55) пропуск абзаца, печать текста в скобках, пропуск абзаца
конец тела оператора условия IF
окончание тела команды WITH (оператор 7))
окончание тела команды WITH (оператор 5))
Листинг программы экспорта в Excel
Процедуру необходимо адаптировать к Вашему проекту.
loExcel=CREATEOBJECT("Excel.Application")
loExcel.displayAlerts=.F.
with loExcel
.Visible=.t.
.WorkBooks.Add
.Sheets(1).Select
** Выполнение запроса для занесения в таблицу Excel
Use data1!rukovoditely
SELECT TRIM(r_fam)+' '+TRIM(r_im)+' '+TRIM(r_ot),TRIM(s_fam)+' '+TRIM(s_im)+' '+TRIM(s_ot),TRIM(group);
FROM data1!rukovoditely;
order by r_fam;
INTO ARRAY a
rowsCount=ALEN(a,1)
colsCount=ALEN(a,2)
** Код программы получен как макрос VBA
.Columns("A:A").ColumnWidth = 30
.Columns("B:B").ColumnWidth = 30
.Columns("C:C").ColumnWidth = 14
.Range("A1").Select
.ActiveCell.FormulaR1C1 = "Руководитель"
.Range("B1").Select
.ActiveCell.FormulaR1C1 = "Дипломник"
.Range("C1").Select
.ActiveCell.FormulaR1C1 = "Группа"
.Range("D1").Select
j=2
FOR j=2 TO rowsCount+1
.Range("A1").Select
.Activecell(j,1).FormulaR1C1= a[j-1,1]
.Range("B1").Select
.Activecell(j,1).FormulaR1C1= a[j-1,2]
.Range("C1").Select
.Activecell(j,1).FormulaR1C1 = a[j-1,3]
ENDFOR
RELEASE a
ENDWITH
CLOSE DATA ALL
RELEASE TO Excel
RETURN
Макрос VBA
Открыть Excel
Включить VBA Вид → Макросы
Нажать Запись макроса
Дать свое имя или оставить Макрос1, нажать ОК
Установить ширину колонок (например А,В,С)
Ввести наименование колонок
А → Руководители
В → Дипломник
С → Группа
Уйти на свободную колонку
Нажать Остановить запись
Перейти по Вид → Макросы и нажать Выполнить
Перейти по Вид → Макросы и нажать Изменить
Скопировать код макроса
Вставить в VFA с модификацией