- •Тема 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 → Календарь
- •Процедура определения календарной даты
- •5.6. Визуальные средства проектирования.
- •5.6.1. Мастера.
- •5.6.2. Конструкторы.
- •5.6.3. Построители.
Vtf как com-клиент.
Для того чтобы получить ссылку на COM-объект нужно использовать функцию CreateObject(). В скобках указывается имя объекта и его класс.
Листинг программы экспорта в Word
Процедуру необходимо адаптировать к Вашему проекту.
LOCAL loWord
loWord=CREATEOBJECT("Word.Application")
loWord.displayAlerts=.F.
loWord.Documents.Add("Normal",.F.)
with loWord
.Visible=.t.
with .Selection
.Font.Bold=.T.
.Font.SIZE=16
.Font.NAME="Times New Roman"
.ParagraphFormat.ALIGNMENT=1
.typeText('Динамика выполнения дипломного проектирования на кафедре ИТС')
.Font.SIZE=12
.Font.NAME="Times New Roman"
.typeParagraph
.Font.Bold=.F.
Use data1!rukovoditely
SELECT TRIM(s_fam),Trim(r_fam),TRIM(group),Trim(sr_1),Trim(sr_2);
FROM data1!rukovoditely;
order by group,s_fam;
INTO ARRAY a
IF _TALLY>0
.typeParagraph
.typeText('')
rowsCount=ALEN(a,1)
colsCount=ALEN(a,2)
loWord.ActiveDocument.TABLES.ADD(.RANGE,rowsCount+1,colsCount)
T=.TABLES(1)
WITH T
.cell(1,1).RANGE.TEXT='Дипломник'
.cell(1,1).RANGE.FONT.Bold=.T.
.cell(1,2).RANGE.TEXT='Руководитель'
.cell(1,2).RANGE.FONT.Bold=.T.
.cell(1,3).RANGE.TEXT='Группа'
.cell(1,3).RANGE.FONT.Bold=.T.
.cell(1,4).RANGE.TEXT='На 27.11.06'
.cell(1,4).RANGE.FONT.Bold=.T.
.cell(1,5).RANGE.TEXT='На 12.12.06'
.cell(1,5).RANGE.FONT.Bold=.T.
j=2
FOR j=2 TO rowsCount+1
.cell(j,1).RANGE.TEXT=a[j-1,1]
.cell(j,2).RANGE.TEXT=a[j-1,2]
.cell(j,3).RANGE.TEXT=a[j-1,3]
.cell(j,4).RANGE.TEXT=a[j-1,4]
.cell(j,5).RANGE.TEXT=a[j-1,5]
ENDFOR
ENDWITH
.EndKey(6)
.typeParagraph
RELEASE a
ELSE
.typeParagraph
.typeText("Нет сведений о дипломниках")
.typeParagraph
ENDIF
ENDWITH
ENDWITH
RELEASE TO WORD
Структура таблицы rukovoditely
|
r_fam |
r_im |
r_ot |
s_im |
s_fam |
s_ot |
group |
|
|
|
|
|
|
|
|
С помощью этой процедуры выполняется SQL-запрос к таблице базы данных и распечатка результата этого запроса в виде таблицы с заданными полями.
Схема таблицы rukovoditely приведена на листе, где дан листинг программы. В этой таблице хранятся данные о ходе дипломного проектирования на кафедре, где
r
_fam
r_im Фамилия, имя и отчество руководителя
r_ot дипломного проекта
s
_fam
s_im Фамилия, имя и отчество студента
s_ot
group – учебная группа студента
Основные структуры программы.
|
Команда WITH … ENDWITH задает несколько свойств для объекта с помощью операторов свойств, следующих сразу за оператором WITH.
WITH <object Name> <.cStatements> … ENDWITH
Параметры: object Name – задается имя основного объекта; cStatements – операторы VTF задающие свойства объекта.
|
|
З use <имя базы данных . имя таблицы> select from where into
Р Дипломник Руководитель Группа Контрольная дата 1 Контрольная дата 2
Оператор ALEN
rowsCount = ALEN (a,1) определяет количество строк в массиве а и присваивает это значение переменной rowsCount. colsCount = ALEN (a,2) определяет количество столбцов в массиве а и присваивает это значение переменной cowsCount.
|
|
Функция .cell (N_строки, N_столбца) активирует заданную ячейку в таблице. Свойства: .Text – задает содержание ячейки; .Bold=.T. – задает шрифту жирное выделение; .Bold=.F. – убирает шрифту жирное выделение;
|

апрос
к таблице базы данных: организуется
с помощью операторов
езультаты
запроса сохраняются в массивеArray
a
(m,n), где m
– количество строк, n – количество
столбцов, и затем распечатываются в
таблице “Динамика выполнения дипломного
проектирования на кафедре ИТС” со
следующей шапкой: