УДК 681.3.068+800.92Visual FoxPro ББК 32.973.26-018.1 Ш24
Ш24
Шапорев Д. С. Visual FoxPro. Уроки программирования. — СПб.: БХВ-Петербург, 2005. - 480 с: ил. ISBN 5-94157-627-7 В виде уроков, в форме веселого диалога с читателем рассмотрены ос новные приемы работы с СУБД Visual FoxPro — от способов запуска про граммы и описания пользовательского интерфейса до создания собственной компьютерной игры. Описаны разработка и особенности работы с основ ными объектами Visual FoxPro, такими как классы, таблицы, запросы, формы, представления и отчеты. Уделено внимание внедрению OLE-объ ектов, использованию компонентов ActiveX и библиотек классов, а также экспорту и импорту данных в другие приложения. Показано, как создавать справочную систему, установочный диск приложения. Рассмотрено приме нение методов объектно-ориентированного программирования в Visual FoxPro: разработка экранных форм и собственной панели инструментов на основе пользовательских классов, создание компьютерных игр и др. Книга сопро вождается большим количеством примеров и полезных советов. Для начинающих программистов УДК 681.3.068+800.92Visual FoxPro ББК 32.973.26-018.1 Группа подготовки издания: Главный редактор Зам. главного редактора Зав. редакцией Редактор Компьютерная верстка Корректор Дизайн обложки Зав. производством
Екатерина Кондукова Игорь Шишигин Григорий Добин Екатерина Капалыгина Ольги Сергиенко Зинаида Дмитриева Игоря Цырульникова Николай Тверских
Лицензия ИД № 02429 от 24.07.00. Подписано в печать 22.04.05. Формат 70x100Vie. Печать офсетная. Усл. печ. л. 38,7. Тираж 3000 экз. Заказ No 1002 "БХВ-Петербург", 194354, Санкт-Петербург, ул. Есенина, 5Б. Санитарно-эпидемиологическое заключение на продукцию № 77.99.02.953.Д.006421.11.04 от 11.11.2004 г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека. Отпечатано с готовых диапозитивов в ГУЛ "Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12
I S B N 5-94157-627-7
© Шапорев Д. С, 2005 О Оформление, издательство ' БХР-нетероург , 2005
Оглавление Введение
9
Для чего я написал эту книгу? Немного истории, или рождение старого лиса Что нового в СУБД Visual FoxPro?
9 10 11
ЧАСТЬ I. ПРОЦЕДУРНОЕ ПРОГРАММИРОВАНИЕ В VISUAL FOXPRO
13
Урок 1. Начинаем работать!
15
Что такое база данных? Таблицы СУБД
15 16 18
Урок 2. Запуск Visual FoxPro
19
Урок 3. Главное окно Visual FoxPro
24
Заголовок Главное (системное) меню Visual FoxPro А как выполнить команду меню? Как отменить выполнение команды меню? Панель инструментов Рабочий стол Командное окно Строка состояния
24 25 33 34 34 36 36 38
Урок 4. Знакомство с диспетчером проекта
40
Урок 5. Первое приложение
45
Урок 6. Экранная форма. Первое знакомство
55
Окно конструктора форм (Form Designer) Окно свойств (Properties) Конструирование экранной формы
56 60 63
4
Оглавление
Размещение элементов управления в экранной форме Операторы "Украшение" формы Запуск формы на выполнение
66 75 77 78
Урок 7. Использование переменных
81
Практическое использование переменных
83
Урок 8. Массивы
88
Урок 9. Добавление записей в таблицу
90
Урок 10. Перемещение по записям таблицы Использование построителя для объекта CommandGroup Удаление записей Создание экранной формы с использованием мастера Form Wizard Создание экранной формы с использованием мастера AutoForm Wizard
97 97 102 105 109
Урок 11. Создание отчетов
111
Окно конструктора отчетов Размещение в отчете элементов управления Размещение в отчете полей Формат данных Определение условий печати Размещение в отчете линий и контуров Заголовок отчета и итоговые значения Изменение цвета объектов в отчете Размещение в отчете изображений Просмотр отчета Печать отчетов Создание отчетов с использованием мастера Report Wizard Вызов отчета из формы
111 114 117 118 120 122 122 125 125 126 128 131 136
Урок 12. Компиляция проекта
139
Урок 13. Работа с базой данных
143
Конструктор базы данных Индексы Простые индексы Составные индексы Создание постоянных отношений Referential Integrity Builder Идентификаторы Хранимые процедуры Триггеры Практическое использование триггеров Контроль достоверности ввода данных
143 146 147 147 149 152 154 157 159 160 165
Оглавление
5
Урок 14. Экранная форма. Продолжение знакомства
167
Объект ListBox Пример использования Раскрывающийся список (ComboBox) Переключатели (OptionGroup) Контейнер (Container) Счетчик (Spinner) Группа вкладок (PageFrame) Флажок (Checkbox) Линия (Line) Контур (Shape) Изображение (Image) Таблица (Grid)
167 168 172 173 176 176 177 179 180 182 183 183
Урок 15. Выборка, упорядочение и просмотр данных
197
Команда LOCATE. Поиск записей Команда SEEK. Поиск по значению индекса Команда SET FILTER TO. Выбор группы записей Сортировка данных в таблицах
198 199 199 200
Урок 16. Создание и использование запросов
203
Конструктор запросов (Query Designer) Типы внешних объединений Использование в запросе фильтров с несколькими условиями Вывод результатов запроса Курсор Таблица График Экран Отчет Этикетка (почтовая наклейка) HTML SQL-инструкция SELECT или как все это сделать "вручную"? Подзапросы Использование HAVING Использование переменных в SQL-инструкциях SELECT Построение перекрестых таблиц Использование SQL-инструкций в программах
203 209 212 216 217 217 218 220 221 222 227 230 233 236 236 237 243
Урок 17. Использование представлений данных (видов)
244
Создание нового представления данных Параметры представления данных Использование представления данных в отчете
244 251 253
Урок 18. Внедрение OLE-объектов
257
Внедрение нового OLE-объекта Связывание OLE-объекта
260 263
6
Оглавление
Удаление OLE-объекта Использование функций GETDIRQ, GETFILEO и команда APPEND GENERAL
265 265
Урок 19. Использование компонентов ActiveX и библиотек классов
268
Использование библиотек классов Компоненты ActiveX Использование календаря
268 272 279
Урок 20. Экспорт и импорт данных
280
Лис и Excel
280
Урок 21. Наборы форм
293
Урок 22. Создание меню приложения
296
Использование конструктора меню Command (Команда) Submenu (Подменю) Определение клавиш быстрого доступа Определение параметров меню Генерация меню Запуск меню Запуск меню в экранной форме Создание Shortcut-меню
299 30 J 302 303 305 306 306 308 309
Урок 23. Создание справочной системы
311
Создание предметного указателя Создание контекстно-зависимых разделов справки Кнопка What's This?.
321 324 326
Урок 24. Создание ЕХЕ-приложения
328
Параметры проекта Установка основной программы Опция Exclude Построение исполняемого файла
328 329 330 330
Урок 25. Создание установочных дисков
334
ЧАСТЬ И. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
343
Урок 26. Объекты
345
Классы Композитные классы
346 349
Урок 27. Создание классов в Class Designer Пример 1 — калькулятор
352 354
Оглавление
7
Пример 2 — Puzzle
359
Другие полезные примеры
369
Урок 28. Использование таймера
380
Урок 29. Создание экранных форм на основе пользовательских классов
388
Урок 30. Создание панели инструментов
397
Урок 31. Управление классами Class Browser Информация о классе и пиктограмма класса
401 401 404
Урок 32. Фундаментальные классы Visual FoxPro
407
Урок 33. Галерея компонентов (Component Gallery)
414
Панель инструментов Component Gallery Работа с галереей компонентов Использование галереи компонентов для создания приложения
416 420 421
Заключение
423
ПРИЛОЖЕНИЯ
425
Приложение 1. Настройка параметров конфигурации Visual FoxPro
427
Приложение 2. Возможные значения различных параметров
453
Использование диалоговых окон типа MessageBox
456
Приложение 3. Полезные советы
459
Экранные формы Объект Grid Добавление и удаление колонок в объекте Grid без использования Grid Builder "Полосатый" Grid Элемент управления TextBox Элементы управления ListBox и СотЬоВох Как скрыть специфичные колонки в СотЬоВох или ListBox Программное раскрытие списка СотЬоВох Подсказки в ListBox Сохранение в списке СотЬоВох DropDown новых строк, введенных пользователем Запуск других приложений из Visual FoxPro Меню Расширь свое системное меню Панели инструментов Шифрование пароля
459 461
Предметный указатель
467
461 462 462 462 462 463 463 463 464 464 465 466 466
"Никто не может бегать как лиса". Fox Software
Введение Здесь мы очень кратко поговорим о том, для кого и для чего предназначена эта книга, дадим небольшую историческую справку о возникновении и раз витии Microsoft. Visual FoxPro, а также о различиях между современными и устаревшими версиями данного программного продукта.
Для чего я написал эту книгу? Для того чтобы Вы, уважаемый читатель, научились полноценно использо вать один из самых популярных программных продуктов — Microsoft Visual FoxPro. Читая эту книгу, Вы совершите экскурсию в удивительный мир программи рования, познакомитесь с базами данных и способами управления ими, по лучите основные понятия о принципах и методах объектно-ориентиро ванного визуального программирования. А теперь перейдем на "ты"? По-моему, так будет удобнее: я думаю, что оба мы относительно молоды, к чему нам излишняя официальность! Согласен? Ну и прекрасно. В общем, я гарантирую — руководствуясь этой книгой, ты не сможешь: • "взломать" банкомат на соседней улице; • отменить старт "Atlantis"; • читать электронную почту Президента; • совершать подобные противоправные действия. Ничему такому ты здесь не научишься, и в тюрьму тебя не посадят. Зато ты будешь уметь: • работать с Visual FoxPro; • создавать таблицы, базы данных, экранные формы, отчеты и т. д.;
10
Введение
• программировать в терминах классов и работать с библиотеками классов; • создавать свои собственные приложения — их сложность будет зависеть только от поставленной перед тобой задачи и твоей фантазии; • у тебя будет твердая пятерка (догадываешься, по какому предмету?), что весьма полезно в жизни. Как, заманчивая перспектива? То-то же! Ты спрашиваешь, что тебе для это го нужно? Отвечаю: твое желание и эта книга. Еще, конечно, компьютер и непосред ственно сам "виновник торжества" — Microsoft Visual FoxPro. Где его взять? Ну, друг мой, я не знаю... А если серьезно, то среда программирования Visual FoxPro является довольно распространенным программным продук том, и уж его-то купить не проблема, поверь мне. Мы будем считать, что Visual FoxPro уже установлен на твоей машине, ма шина находится в "здравом уме и твердой памяти", сам ты бодр, весел и го тов ринуться на покорение баз данных. Ура! Но не торопись хвататься за мышь, потому что сейчас мы немного отвлечемся на историю создания это го замечательного программного продукта.
Немного истории, или рождение старого лиса История умалчивает о точной дате рождения FoxPro, но известно, что наш Лис, как и положено всем нормальным лисам, развивался путем эволюции. В 70-х годах прошлого века для управления базами данных наряду с други ми СУБД использовался язык программирования dBase. Вот из него-то и "вышло" в середине 80-х годов детище компании Fox Software, окрещенное как FoxPro. "Никто не может бегать как лиса" — таким был девиз разработ чиков, имеющих в виду скорость обработки данных. От своего прародителя Лис отличался, как бронепоезд от дрезины (как по скорости, так и по "комфорту" работы) — ибо он уже имел нормальный GUI (Graphic User Interface, графический интерфейс пользователя). Но главным все же у "ребенка" был не этот самый GUI — главным была ско рость! Основатели компании Fox Software демонстрировали многочисленной аудитории, как FoxPro за считанные секунды находил нужную запись в базе данных, содержавшей несколько сотен тысяч записей! Мир вздрогнул, а присутствовавший при этом зрелище народ ахнул от восторга, тем самым выписав путевку в жизнь нашему приятелю Лису. В последующие годы развитие FoxPro обеспечивала компания Microsoft, выкупившая этот программный продукт у Fox Software. Наряду с версией FoxPro 2.5 for DOS вышла в свет FoxPro for Windows, затем уже появилась
Введение
11
первая "визуальная" версия — Visual FoxPro 3.0, после нее Visual FoxPro 5.0, Visual FoxPro 6.0 (именно ее мы с тобой и будем рассматривать) и наконец, не так давно нас порадовали выходом в свет новой версии — Visual FoxPro 8.0 (и даже поговаривают о выпуске девятой версии!). Так в чем же отличие "визуальных" версий от более ранних? Сейчас я тебе объясню на примере шестой версии Visual FoxPro. Почему именно шестой, а не восьмой или пятой? Да просто потому, что абсолютно непринципиаль но, на какой конкретной версии данного продукта проходить обучение. Пусть это будет пятая, седьмая, даже третья версия — это не суть важно. Важно то, что во всех версиях принципы программирования одинаковы, используется один и тот же язык и подавляющее большинство команд, свойств, методов и событий идентичны. Есть, конечно, различия между третьей и восьмой версиями (более того, существенные различия), но еще раз повторюсь — это никак не повлияет на твою последующую работу на ниве программирования. И еще один аргумент — несмотря на выход вось мой версии, наиболее популярной все же остается именно шестая.
Что нового в СУБД Visual FoxPro? Почему, собственно, Visual? Visual — от слова "визуальный", т. е. видимый. А что это означает? То, что тебе не придется самому писать программный код (или почти не придется). Проект твоего приложения будет находиться перед твоими глазами в виде иерархического дерева и ты можешь запросто переключаться между любыми компонентами. В общем, все, что ты приду маешь — то и увидишь на мониторе: это так называемая технология WYSIWYG (What You See Is What You Get). А знаешь, как было раньше, в "не визуальную эру"? В тех версиях не было экранных форм, там использовались "экраны" (screen) и чтобы увидеть чтонибудь на этом экране, приходилось писать программный код — естествен но, "вручную" — и только потом на мониторе появлялось нечто похожее на то, что ты хотел (и то далеко не всегда). Но мы-то с тобой работаем на "продвинутом" Visual и подобная ситуация теперь может только присниться. Наряду со всей этой красотой хочется кратко отметить еще несколько при ятных вещей, реализованных в последних версиях Visual FoxPro. • Усовершенствованный Automation Server — поддерживает технологию СОМ. Это позволяет использовать возможности Visual FoxPro в других приложениях, и наоборот. • HTML-справка. При помощи дополнительной сервисной программы HTML Help Workshop ты сможешь разработать для своего приложения справочную систему в формате HTML. • Большое количество построителей (Builder) и мастеров (Wizard) — их использование способно здорово облегчить нелегкую жизнь программиста.
12
Введение
• Галерея компонентов позволит тебе организовывать и группировать раз личные объекты (формы, классы и т. д.). • Поддержка форматов JPEG, GIF — можешь украсить приложение кар тинками и анимацией. • Поддержка дат после 2YK (2000 г.) — правда, нам это уже не грозит. • Улучшенный графический интерфейс пользователя — тот самый GUI, про который ты уже слышал. • Технология активных документов — у тебя есть возможность просмот реть не HTML-документ в браузере Internet Explorer. • Поставляемая совместно с Visual FoxPro программа создания установоч ных дисков для распространения создаваемых приложений. Это, как ты понимаешь, лишь некоторые новые "фишки" Visual FoxPro, пе речислять подробно все нововведения можно очень долго. Если в процессе создания наших приложений встретится что-нибудь необычное — я обяза тельно расскажу о нем подробнее. Прочитав эти страницы, ты узнал с "кем" тебе придется иметь дело, и те перь мы переходим к первой части нашей книги.
ЧАСТЬ I Процедурное программирование в Visual FoxPro В части I нашей книги мы познакомимся с основами процедурного или мо дульного программирования в СУБД Visual FoxPro. Мы начнем с самого простого: научимся определять структуру свободной таблицы, познакомим ся с диспетчером проекта, экранной формой, отчетом и т. д. Научимся ис пользовать различные элементы управления, освоим приемы работы с раз личными мастерами (Wizard) и построителями (Builder). Затем мы перейдем к работе с базой данных, научимся создавать запросы и представления дан ных и создадим полностью работающее учебное приложение.
УРОК 1
Начинаем работать! Начинать-то начинаем, но ведь у тебя уже, наверняка, возникли некоторые вопросы. Что такое СУБД? А где я возьму базу данных? Я думаю, что тебе уже приходилось слышать про базы данных, а когда ты услышал про них, то подумал: "Это точно не для меня, ведь этим могут за ниматься только крутые программисты-профессионалы или уж совсем злобные хакеры". Что тут сказать? Ты прав, приятель, а чтобы убедить тебя окончательно, приведу несколько мало кому известных фактов из своей собственной биографии: • когда я был маленьким, вместо погремушек я играл дискетами с файла ми баз данных; • свою первую Нобелевскую премию я получил в 10 лет; • по ночам (особенно в полнолуние) я люблю взламывать компьютерные сети. Не веришь? Вот и молодец, потому что на самом деле ситуация несколько иная: • я такой же "профи", как и ты; • я понятия не имею о технологии "взлома"; • я белый и пушистый; • я боюсь всего этого больше, чем ты (если только ты не думаешь, что я каждый день пишу новую книгу о программировании). Так что не отчаивайся, дружище — сейчас я прочту тебе небольшую лек цию, и мы все разберем по порядку.
Что такое база данных? С базами ты сталкиваешься почти каждый день. Вот ты идешь в банк, что бы снять энную сумму (для покупки Visual FoxPro). А ты видел, чтобы one-
Часть I. Процедурное программирование в Visual FoxPro
16
ратор, заметив тебя, начинал лихорадочно перебирать какие-нибудь бумаги, гроссбухи и подобные вещи, чтобы определить, кто ты такой и сколько там у тебя на счету? Конечно же, нет. У оператора стоит компьютер, в который занесена информация о всех кли ентах банка, и он за секунду узнает о тебе все, что ему нужно. При этом все данные в его компьютере хранятся в виде базы данных. Это только один пример, а вообще, при наличии воображения, в виде базы данных можно представить все, что угодно. Ну, или почти все. Телефонный справочник — база данных? Еще какая! Паспорт — тоже база данных, правда, очень ма ленькая, всего с одной записью. Расписание твоих уроков, календарь, днев ник — все это можно представить в виде базы данных. А если мы заглянем в какую-нибудь бухгалтерию или, например, в налоговую инспекцию (Боже упаси!) — вот где огромное количество различных баз данных! Именно в таких местах наш Лис чувствует себя, как рыба в воде. Очевидно, что базы данных занимают отнюдь не последнее место в нашей деловой, да и в повседневной жизни. Так что же это такое? С точки зрения Visual FoxPro база данных — это файл с расширением dbc, который может содержать такие объекты, как: • Tables (таблицы); • views (виды, или представления данных: они подразделяются на локаль ные Local Views И удаленные Remote Views); • Connections (связи); • stored Procedures (хранимые процедуры). Помимо баз данных, источником данных для Visual FoxPro могут служить свободные таблицы и запросы.
Таблицы Таблица в FoxPro хранится в файле с расширением dbf. Представим про стейший пример (табл. 1.1). Таблица 1.1. Таблица Pasport Фамилия
Имя
Отчество
Дата рождения
Шапорев
Дмитрий
Сергеевич
22.08.1972
Ясно видно, что таблица — это двумерный набор строк и столбцов. В FoxPro столбцы таблиц называются полями (Field — англ. "поле"), а стро ки — записями (Record ~ англ. "запись") — табл. 1.2.
Урок 1. Начинаем работать!
17
Таблица 1.2. Пояснение к определению таблицы Field 1
Field2
Field n
Record 1 Record2
Record n
Каждое поле имеет свое имя, тип, размер, и в нем содержится информация о данных какой-либо одной категории. В таблице pasport.dbf поле имя со держит строку СИМВОЛОВ Дмитрий (ТИП Character), а поле Дата рождения — дату 22.08.1972 (тип Date). Попытка записать в поле дата рождения строку символов обречена на неудачу, т. к. данное поле имеет тип Date, а поля это го типа могут содержать только дату и ничего кроме этого. Существует еще несколько других типов полей, используемых в таблицах, в дальнейшем мы их подробно рассмотрим. Таблица в Visual FoxPro может быть представлена как в виде свободной таб лицы, так и в виде таблицы базы данных. Таблица базы данных аналогична свободной таблице, но для нее в базе дан ных может храниться дополнительная информация, такая как: • длинное имя; • комментарии для полей; • первичные индексы; • заголовки полей; • правила контроля при изменении или добавлении данных; • триггеры; • виды (представления данных). Все это называется словарем данных таблицы базы данных. Я уже говорил о том, что и просто свободная таблица, и таблица базы дан ных хранится в файлах с расширением dbf (Data Base File), а вот сама база данных — в файле с расширением dbc (Data Base Container). Подобное раз деление началось с выходом версии Visual FoxPro 3.0, в предыдущих верси ях все таблицы назывались базами данных и имели расширение dbf. Базы данных могут иметь различные размеры, я имею в виду количество записей — от простейшей, состоящей из одной таблицы с одной записью до довольно "крутых" конструкций с десятками, а то и сотнями связанных таб лиц, каждая из которых может содержать, допустим, до миллиона записей! Как ты считаешь, сколько тебе понадобится времени, чтобы найти нужные
18
Часть I. Процедурное программирование в Visual FoxPro
данные, просматривая, скажем, 8 424 659 записей? Я думаю, до пенсии точ но хватит... Именно на этот случай (быстрый поиск, редактирование данных) и были созданы программы, которые называются СУБД или Системы Управления Базами Данных.
СУБД Если тебе где-нибудь встретится аббревиатура СУРБД, то знай, что это то же самое — только на нормальный язык переводится как Система Управле ния Реляционными Базами Данных. Слово "реляционные" означает, что данные в таблицах каким-то образом связаны между собой. Visual FoxPro также можно определить как СУРБД. В настоящее время существует огромное количество различных систем управления данными. Наиболее распространены такие, как Oracle, SQL Server, Microsoft Access, Clipper и др. Все они. как и все в этом мире, имеют свои преимущества и свои недостатки. Наш друг Лис также не идеален, но он является достойным конкурентом в данной категории профаммного обеспечения, т. к. изначально был задуман именно как средство управления базами данных и ничто другое. На этом наша короткая лекция заканчивается, и если ты еще не заснул, то наш хитрый Лис давно уже смотрит сны — пора его будить, чем мы и зай мемся.
УРОК 2
Запуск Visual FoxPro Ты, наверное, уже не раз запускал на своей машине различные програм мы — Word, Excel, Internet Explorer, еше какие-нибудь, — поэтому для тебя не секрет, что способов запустить Windows-приложение — "вагон и малень кая тележка". Visual FoxPro в этом отношении ничем не отличается от дру гих программ, и также имеется несколько способов его активизации. Рас смотрим некоторые из них. • Запуск с использованием кнопки Пуск (Start). Когда ты устанавливал Visual FoxPro на свой компьютер, инсталлятор создал новую программную группу Windows, которая называется Microsoft Visual FoxPro. Нажми кнопку Пуск (Start), расположенную на рабочем столе твоей машины, в появившемся меню выбери пункт Про граммы (Programs). Раскроется еще одно меню, в котором тебе нужно выбрать пункт Microsoft Visual FoxPro, при этом появится еше одна "менюшка" — вот за ней-то и спрятался наш рыжий друг. (Одно "но" — если ты используешь не шестую, а. скажем, восьмую версию, то допол нительное меню не появится). Если что-то не понятно, посмотри рис. 2.1. • Запуск c использованием командной строки. Нажми опять же кнопку Пуск, выбери пункт Выполнить. В появившем ся окне нажми кнопку Обзор. Найди каталог, в котором находится Visual FoxPro и укажи файл vfp6.exe (он имеет пиктограмму с изображе нием забавной рыжей мордочки), нажми кнопку Открыть, а затем в ок не Запуск программы щелкни по кнопке ОК (рис. 2.2). На заметку Название исполняемого файла зависит от используемой версии Visual FoxPro Например, в шестой версии он называется vfp6.exe, а в восьмой — соответст венно vfp8.exe.
20
Часть I. Процедурное программирование в Visual FoxPro
Рис. 2.1. Запуск с использованием кнопки Пуск
Рис. 2.2. Запуск с использованием командной строки
• Запуск с использованием Проводника Windows. Нажимаем кнопку Пуск, выбираем пункт Программы, затем Проводник. В открывшемся окне находим каталог с Visual FoxPro, ставим указатель мыши на файл Vfp6.exe, теперь просто делаем двойной шелчок левой кнопкой мыши (Double Click) и, как говорится, дело в шляпе (рис. 2.3). А можно и без двойного щелчка — устанавливаем мышь на Vfp6.exe и нажимаем правую кнопку. В появившемся контекстном меню выбираем
Урок 2. Запуск Visual FoxPro
21
пункт Открыть. К такому же результату приведет щелчок на пункте ме ню Файл и выбор соответствующего пункта Открыть. • Запуск с использованием ярлыка. По-моему, это самый удобный способ, особенно если каждый день ра ботаешь с Visual FoxPro. Все очень просто: находим файл Vfp6.exe, ука зываем на него мышью и нажимаем правую кнопку. Появляется меню, в котором выбираем пункты Отправить | Ярлык на рабочий стол. Все. На рабочем столе появится "Ярлык для Vfp6.0". Теперь не нужно нажи мать разные кнопки, запускать проводники и т. д. — для запуска мы просто шелкаем по ярлыку. Дешево и сердито. (Ярлык по желанию можно переименовать — щелкаем правой кнопкой мыши и выбираем соответствующий пункт.)
Рис. 2.3. Запуск с использованием программы Проводник
Можно, конечно, привести еще пару-другую способов открытия программ Windows, но цель данной книги не в этом — в конце концов, запуск нужно го приложения дело сугубо личное, кому как удобнее... Нам важно, что получится после запуска. А получится вот какая штука (рис. 2.4). То, что ты сейчас видишь, называется главным окном, внутри которого от крывается небольшое окно команд (Command Window). Если ты запустишь
22
Часть I. Процедурное программирование в Visual FoxPro
\\
HUM
Рис. 2.4. Главное окно Visual FoxPro
Visual FoxPro сразу после его установки на свой компьютер, то после запус ка появится экран-заставка (рис. 2.5), содержащий пять опций: • Open the new Component Gallery to organize your Visual FoxPro com ponents — открыть новую галерею компонентов для объединения компо нентов Visual FoxPro; • Discover programming solutions by exploring sample applications — посмот реть программные решения из примеров приложений; • Create a new application — создать новое приложение; • Open an existing project — открыть существующий проект; • Close this screen — закрыть этот экран. В нижней части экрана-заставки расположен флажок Don't display this Welcome screen again (He показывать этот экран при следующих запусках). Большинство из программистов именно его и устанавливают. Мы поступим таким же образом (щелкнув на нем мышью), и при следующем запуске сра зу окажемся в главном окне Visual FoxPro, минуя экран-заставку.
Урок 2. Запуск Visual FoxPro
Рис. 2.5. Экран-заставка Visual FoxPro
23
УРОК 3
Главное окно Visual FoxPro Этот объект можно разбить на шесть основных частей: • строка заголовка (Caption); • строка главного меню (System menu); • панель инструментов (Toolbar); • рабочая область или рабочий стол (Desktop); • командное окно (Command window); • строка состояния (Status bar). Я понимаю твое нетерпение — все это пока кажется довольно скучным, но согласись, что нельзя выезжать на новом автомобиле, не узнав назначение тех или иных элементов управления, не так ли? Все отдают себе отчет, к чему могут привести подобные эксперименты... Поэтому стоит уделить этому уроку немного своего драгоценного времени — мы кратко рассмот рим каждую часть главного окна.
Заголовок Заголовок, как известно, для того и существует, чтобы на нем было чтонибудь написано. А там и написано: Microsoft Visual FoxPro. Но, в отличие от обычных заголовков, заголовки окон Windows имеют еще и некоторые дополнительные функции. Например, щелкни мышью по значку пикто граммы, расположенному слева от надписи заголовка. Откроется системное меню, позволяющее тебе манипулировать главным окном Visual FoxPro. Приведем пункты системного меню в табл. 3.1. Так, что там у нас еще? Справа расположены три кнопки. Первая, с чертой внизу — Свернуть — сворачивает главное окно до размера пиктограммы и помешает его на Па-
Урок 3. Главное окно Visual FoxPro
25
нель задач Windows. При этом Visual FoxPro не прекращает своей работы. Вторая кнопка — Развернуть — разворачивает главное окно. И наконец, третья кнопка Закрыть — закрывает главное окно, тем самым прекращая работу Visual FoxPro. Закрашенная в синий цвет часть заголовка также имеет свои функции: О можно щелкнуть на ней мышью и, удерживая нажатой левую кнопку, перетащить главное окно в любое место экрана; О выполнив двойной щелчок мышью в этой области, можно развернуть главное окно или восстановить его предыдущие размеры. Ha 3 a м е т к у Синий цвет, установленный по умолчанию, можно запросто изменить — за это отвечают элементы управления из Панели управления Windows (Панель управления | Экран). Таблица 3.1. Команды системного меню Команда
Описание
Restore (Восстановить)
Восстанавливает предыдущий размер окна после того, как ты его свернул или развернул
Move (Переместить)
Передает фокус главному окну Visual FoxPro (активизи рует его) и позволяет тебе двигать его по всему экрану, используя клавиатуру
Size (Размер)
Активизирует главное окно и позволяет менять размеры его границ, используя клавиатуру (клавиши управления курсором)
Minimize (Свернуть)
Сворачивает главное окно до размеров пиктограммы
Maximize (Развернуть)
Разворачивает главное окно "во всю ширину". Размеры максимальные
Close (Закрыть)
Закрывает Visual FoxPro
Главное (системное) меню Visual FoxPro Вот уж действительно, меню как в ресторане — чего только нет! Будет очень хорошо, если ты в этот момент начнешь просматривать пункты системного меню Visual FoxPro на мониторе — наглядный пример очень полезен, по верь мне. Бери мышь — и вперед! Меню File (Файл). При щелчке мышью открывается меню, которое содер жит набор команд, связанных с доступом к файлам. С помощью этих ко-
26
Часть I. Процедурное программирование в Visual FoxPro
манд можно создавать, открывать, сохранять, печатать и закрывать файлы различных типов. Список команд представлен в табл. 3.2. Таблица 3.2. Команды меню File Команда
Описание
New (Создать новый)
Позволяет создавать файлы различных типов
Open (Открыть)
Открывает диалоговое окно Open, в котором можно указать имя и тип файла, а затем открыть указанный файл
Close (Закрыть)
Закрывает активное окно
Save (Сохранить)
Сохраняет файл на диске. Если файл только что создан, то Лис предложит ввести имя этого файла
Save as (Сохранить как)
Также сохраняет указанный файл на диске, но пе ред сохранением обязательно запрашивает имя файла. При помощи этой команды можно создать точную копию данного файла
Save as HTML (Сохранить как HTML)
Позволяет сохранить файл в формате HTML
Revert (Отменить)
Позволяет отменить все изменения, выполненные в текущем сеансе редактирования и вернуть файл к его "первозданному" виду
Import (Импорт)
Импортирует файл из другого приложения, напри мер из ранних версий FoxPro
Export (Экспорт)
То же самое, что предыдущая команда, только "в обратную сторону" — из Visual FoxPro в другое при ложение
Page Setup (Параметры страницы)
Позволяет изменить параметры принтера и макета страницы
Page Preview (Предварительный просмотр)
Отображает отчеты на экране такими, какими они будут после вывода на печать. Просмотр, в общем
Print (Печать)
Печатает содержимое активного окна или буфера обмена
Send (Отправить)
Можно отправить сообщение E-Mail. Учителю ин форматики или, например, автору этой книги
Exit (Выход)
Выход. Коротко и ясно. Закрывает главное окно и прекращает работу Visual FoxPro. Как говорится — аут!
Меню Edit (Редактирование). С помощью команд этого меню осуществля ется редактирование файлов (табл. 3.3).
Урок 3. Главное окно Visual FoxPro
27
Таблица 3.3. Команды меню Edit Команда
Описание
Undo (Отменить)
Отменяет последнее действие. Щелкнул ты, допустим, мышью не туда, куда надо, и что-то там изменилось. Катастрофа?! Нет, конечно. Смело нажимай Undo — опять все в порядке! Удобная штука
Redo (Повторить)
Прямо противоположна предыдущей команде. "Отмена отмены". А по-русски — снова выполняет отмененное действие
Cut (Вырезать)
Удаляет выделенный текст или объект и помещает его в буфер обмена (Clipboard)
Сору (Копировать)
Создает копию выделенного текста или объекта и также помещает ее в буфер обмена
Paste (Вставить)
Вставляет в указанную тобой позицию содержимое бу фера обмена
Paste Special (Специальная вставка)
Почти то же, что и Paste, только "круче" — вставляет в указанную позицию не содержимое буфера обмена, а объекты из других приложений
Clear (Очистить)
Удаляет выделенный текст без копирования его в буфер обмена
Select All (Выделить все)
Выделяет все объекты в текущем окне. Используется для одновременного перемещения или форматирова ния объектов. Очень удобно применять при создании больших экранных форм и отчетов, да и вообще вещь хорошая...
Find (Найти)
Используется для поиска строк в файле
Find Again (Найти еще)
То же самое, что и Find, только поиск ведется не с на чала документа, а с указанной позиции
Replace (Заменить)
Используется для замены текстовых строк
Go to Line (Перейти на строку)
Применяется при отладке программ и позволяет перей ти на строку с указанным номером
Insert Object (Вставить объект)
Действует почти как команда Paste Special, но при этом позволяет сразу открыть другое приложение, в котором можно создать этот самый объект
Object (Объект)
Позволяет отредактировать объект OLE
Links (Связи)
Редактирование связанных объектов OLE
Properties (Свойства)
Настройка редактора и его свойств
Меню View (Вид) — "хитрая штучка". Допустим, когда мы просматриваем таблицу, меню View содержит команды, связанные с просмотром таблицы.
28
Часть I. Процедурное программирование в Visual FoxPro
Если же в данный момент не открыта ни одна таблица, форма или отчет, то в этом меню содержится всего одна опция Toolbars (Инструменты или Па нели инструментов). При выборе этой опции открывается диалоговое окно Toolbars (Панели инструментов), в котором перечислены все панели инст рументов Visual FoxPro. Если мы все же просматриваем таблицу либо редактируем экранную форму или отчет — в этом случае можно пользоваться командами меню View из табл. 3.4. Таблица 3.4. Команды меню View Команда
Описание
Edit (Редактирование)
Включает режим E d i t для просмотра и редак тирования записей. В этом режиме поля таблиц отображаются вертикально
Browse (Просмотр)
Включает режим Browse для просмотра и ре дактирования записей. В этом режиме поля таблиц отображаются горизонтально. Строки представляют записи
Append Mode (Добавление), (Расширенный режим)
Добавляет пустую запись в конец таблицы, при этом указатель записи устанавливается на ее первое поле
Design (Конструкторы)
Отображает окно Конструктора форм (Form Designer), или окно Конструктора отчетов (Report Designer), или окно Конструктора эти кеток (Label Designer) — в зависимости от того, что тебе нужно
Tab Order (Порядок табуляции)
Определяет порядок обхода объектов в экран ных формах при использовании клавиши
Preview (Предварительный просмотр)
Отображает отчеты на экране такими, какими они будут после печати
Data Environment (Среда данных)
Определяет таблицы и отношения, данные из которых будут использованы в экранных фор мах и отчетах (этикетках)
Properties (Свойства)
Открывает диалоговое окно Properties (Свой ства), в котором отражены все свойства экран ных форм и элементов управления
Code (Код, программа)
Открывает окна программ для редактирования методов объектов
Form Controls Toolbar (Панель элементов экранной формы)
Открывает панель инструментов для разработ ки экранной формы во время работы в Конст рукторе форм
Урок 3. Главное окно Visual FoxPro
29 Таблица 3.4 (окончание)
Команда
Описание
Report Control Toolbar (Панель инструментов отчета)
Открывает панель инструментов для разработ ки отчета во время работы в Конструкторе отче тов
Layout Toolbar (Панель инструментов для макетирования)
Используя эту панель инструментов, можно выравнивать элементы управления в формах и отчетах
Color Palette Toollbar (Панель палитры цветов)
Панель палитры цветов позволяет выбирать цвет для элементов управления
Report Preview Toolbars (Панель предварительного просмотра отчета)
На этой панеле расположены кнопки, которые помогут тебе напечатать отчет, просмотреть его страницы или выйти из режима просмотра
Database Designer (Конструктор базы данных)
Открывает окно Database Designer (Конструк тор базы данных), в котором можно управлять таблицами, видами и отношениями между таб лицами
Grid lines (Линии сетки)
Включает и выключает режим отображения линий сетки
Show Position (Показать позицию)
При выборе этой опции в строке состояния ото бражаются позиция, высота и ширина объекта
General Options (Общие параметры)
Добавляет код в меню во время работы с Кон структором меню (Menu Designer)
Menu Options (Опции меню)
Добавляет программный код для выбранной опции меню
Toolbars (Инструменты)
Открывает диалоговое окно Toolbars (Инстру менты), в котором отображены все панели ин струментов Visual FoxPro
Теперь у нас на очереди команды меню Format (Формат). Они применяются для изменения характеристик шрифта, отступов и интервалов. Заметим, что при использовании различных конструкторов Visual FoxPro не все команды доступны — это зависит от конкретного случая. Мы же рассмотрим их все сразу (табл. 3.5). Таблица 3.5. Команды меню Format Команда
Описание
Font (Шрифт)
Используется для выбора шрифта и его параметров (размер, цвет и т. д.)
30
Часть I. Процедурное программирование в Visual FoxPro Таблица 3.5 (продолжение)
Команда
Описание
Enlarge Font (Увеличить шрифт)
Увеличивает шрифт в текущем окне
Reduce Font (Уменьшить шрифт)
Уменьшает шрифт в текущем окне
Single Space (Одинарный интервал)
Устанавливает в текущем окне одинарный интервал для текста
11/2 Space (Полуторный интервал)
Устанавливает в текущем окне полуторный интервал для текста
Double Space (Двойной интервал)
Устанавливает в текущем окне двойной интервал для текста
Indent (Отступ)
Устанавливает отступ в текущем окне для выделенных строк или для текущей строки
Unindent (Отменить отступ)
Отменяет отступ в текущем окне для выде ленных строк или для текущей строки
Comment (Комментарий)
Выделенная строка становится коммента рием
Align (Выравнивание)
Команды выравнивания объектов
Size (Размер)
Команды, влияющие на размер объекта
Horizontal Spacing (Горизонтальный интервал)
Команды настройки горизонтального ин тервала между выделенными объектами
Vertical Spacing (Вертикальный интервал)
Команды настройки вертикального интер вала между выделенными объектами
Bring to Front (Вынести вперед)
Выделенный объект располагается впереди всех остальных объектов формы или отчета
Send to Back (Отправить назад)
Выделенный объект располагается позади всех остальных объектов формы или отчета
Group (Группировка)
Группирует выделенные объекты и позво ляет в дальнейшем обращаться с ними как с единым объектом
Ungroup (Разбивка группы, разгруппировка)
Разбивает группы на отдельные элементы
Snap to Grid (Привязка к линиям сетки)
При "переносе" объекта мышью и "сбросе" (отпускании кнопки) левая верхняя точка объекта соединяется с ближайшей точкой пересечения линий сетки
Set Grid Scale (Масштаб сетки)
Настройка расстояния между горизонтальными и вертикальными линиями сетки
Text Alignment (Выравнивание текста)
Выравнивает текст в выделенном объекте
Урок 3. Главное окно Visual FoxPro
31 Таблица 3.5 (окончание)
Команда
Описание
Fill (Заполнение, заливка)
Определяет орнамент и цвет заполнения для фигур
Реп (Перо)
Определяет стиль и размер пера для рисо вания линий и фигур
Mode (Режим)
Устанавливает режим прозрачности для заднего плана объекта
В меню Tools (Инструменты) представлен довольно широкий выбор разных полезных вещей: мастера, отладчики, макросы и прочие "приятности" (табл. 3.6). Таблица 3.6. Команды меню Tools Команда
Описание
Wizards (Мастера)
Список мастеров Visual FoxPro
Spelling (Орфография)
В школе у тебя орфографию проверяли? Вот и здесь проверят. Проверяется правописание текстовых и Метополей
Macros (Макрос)
При помощи этой команды можно создать свои макросы
Class Browser (Просмотр класса)
Можно просматривать содержимое любого класса Visual FoxPro
Component Gallery (Галерея компонентов)
Эта команда открывает соответствующее окно для рабо ты с Галереей компонентов Visual FoxPro
Coverage Profiler
Позволяет просмотреть информацию о выполненной про грамме
Beauty (Украсить)
Старина Лис тот еще пижон — при помощи этой команды он переформатирует файл программы, добавляя отступы и заменяя строчные буквы прописными. Потом попробу ем — забавно!
Run Active Document (Активный документ)
Позволяет выбрать и запустить активный документ
Debbuger (Отладчик)
Не знаю, как и перевести... Bugs — "жучки". В среде про граммистов жучками называются ошибки в программном коде. А вот этот убойный механизм и позволяет нам их выловить и безжалостно уничтожить. Отладчик, одним словом
OPtions (Опции)
Доступ к параметрам конфигурации Visual FoxPro
Часть I. Процедурное программирование в Visual FoxPro
32
Пятый пункт линейки системного меню Visual FoxPro — Program (Про граммы). Здесь находится всего шесть команд, связанных с запуском, оста новкой и компиляцией программ (табл. 3.7). Таблица 3.7. Команды меню Program Команда
Описание
Do (Выполнить)
Запускает программу из диалогового окна
Cancel (Отменить)
Отменяет выполнение текущей программы
Resume (Продолжить)
Возобновляет выполнение программы, находящейся в состоянии ожидания. "Довести" программу до такого состояния очень просто — используйте следующую команду
Suspend (Приостановить)
Приостанавливает выполнение текущей программы
Compile (Компилировать)
Компилирует исходный файл в объектный код
Run (Выполнить)
Запускает текущую программу
Расположением окон на экране заведует предпоследний пункт главного ме ню — Window (Окно) (табл. 3.8). Таблица 3.8. Команды меню Window Команда
Описание
Arrange All (Расположить все)
Показывает на экране все открытые окна таким об разом, что они не перекрывают друг друга
Hide (Скрыть)
"Прячет" активное окно, но не удаляет его из памяти
Show All (Показать все)
Отображает все определенные окна
Clear (Очистить)
Стирает текст из активного окна или из главного окна Visual FoxPro
Cycle (Цикл)
Делает активным следующее окно
Command Window (Командное окно)
Открывает окно для ввода команд
Data Session (Сеанс данных)
Открывает соответствующее окно, в котором можно проконтролировать, какие таблицы в каких рабочих областях открыты. (А областей-то 32 767!)
Девять ранее определенных пользователем (т. е. тобой) окон. Если окон больше, появляется пункт More Windows (Еще окна). Открыть любое из них можно, щелкнув мышью
Урок 3. Главное окно Visual FoxPro
33
Заключительная опция системного меню — Help (Помощь). Вот представь: пишешь ты программу, пишешь и вдруг — ПРОБЛЕМА! И спросить не у кого! И меня рядом нет! Что делать? В англоязычных стра нах в таких случаях принято кричать: "Help me! Save me! I'm dying!". А мы поступаем иначе: щелкаем мышью на соответствующем пункте и изучаем меню Help (Помощь) — табл. 3.9. Таблица 3.9. Команды меню Help Команда
Описание
Microsoft Visual Fox Pro Help Topic (Темы справочной системы)
Открывает окно справочной системы
Contents (Содержание)
Вкладка Содержание
Index (Указатель)
Указатель
Search (Поиск)
Поиск
Techical Support (Техническая поддержка)
Отображает информацию о технической поддержке
Microsoft on the Web (Страничка корпорации Microsoft в Интернете)
Открывает меню со ссылками на Web-стра нички корпорации Microsoft
About Microsoft Visual Fox Pro (Информация о программе)
В этом окне содержится информация о раз работчиках, номер версии программы и т. д.
Теперь, когда мы более или менее разобрались с назначением различных команд меню, самое время для следующего вопроса.
А как выполнить команду меню? Да запросто! Как и в других приложениях Windows, в Visual FoxPro команды меню можно выполнять, используя как мышь, так и клавиатуру. • Использование мыши — устанавливаем указатель на нужный пункт ли нейки меню и нажимаем левую кнопку мыши (если ты левша — нажи май правую, у тебя мышь другая). В раскрывшемся списке команд меню выбираем необходимую и опять жмем левую кнопку. • Использование клавиатуры — сначала нужно активизировать линейку меню, нажав клавишу или . Затем при помощи клавиш управления курсором устанавливаем курсор на нужный пункт и нажима ем клавишу <Enter>. Аналогичные манипуляции проводим и с раскрыв шимся списком команд меню. 2
Зак. 1002
34
Часть I. Процедурное программирование в Visual FoxPro
• Использование "горячих" клавиш ("hot key"). Ты уже заметил, что справа от большинства команд меню написаны непонятные закорючки типа Ctrl+O? Вот это и есть эти самые "горячие" клавиши или "клавиши бы строго доступа". При комбинации (одновременном нажатии) клавиш и указанной буквы выполнится соответствующая команда. В дан ном примере откроется диалоговое окно Open. Использование этих соче таний клавиш действительно очень удобно, а время, потраченное тобой на их запоминание, с лихвой компенсируется при разработке приложе ния. Да, еще совет — не пытайся нажимать их одновременно, все равно не получится — просто нажми и, не отпуская ее, надави нужную клавишу. Успехов!
Как отменить выполнение команды меню? Сделать это очень просто: • при использовании мыши просто щелкнуть в любое свободное место эк рана; • при использовании клавиатуры отмена происходит по нажатию клавиши <Esc>. Для отмены активизации линейки главного меню необходимо по вторно нажать клавишу или .
Панель инструментов Как я уже говорил, в Visual FoxPro имеется несколько панелей инструмен тов, каждая из которых предназначена для выполнения какой-нибудь кон кретной задачи — в зависимости от того, что именно мы делаем в данный момент. По желанию ты можешь ВСЕ панели инструментов разместить на рабочем столе, но при этом будет неудобно работать, т. к. экранная площадь значи тельно сократится. В процессе построения наших приложений мы подробно рассмотрим весь этот инструментарий, а пока познакомимся с главной сис темной панелью инструментов Visual FoxPro (рис. 3.1) Данная панель инст рументов еще называется Standard (Стандартная) и практически всегда при сутствует на экране.
Рис. 3.1. Главная панель инструментов
На главной системной панели инструментов расположены двадцать кнопок и один comboBox (привыкай к терминологии, comboBox — это элемент управ-
Урок 3. Главное окно Visual FoxPro
35
ления, представляющий собой раскрывающийся список). При установке ука зателя мыши на любую кнопку отображается окно с подсказкой (TooiTips), в котором приводится название кнопки. А для того, чтобы узнать, что озна чает сие название и что происходит при нажатии этих кнопок, тебе необхо димо просмотреть табл. 3.10. Таблица 3.10. Команды панели инструментов Название кнопки (команды)
Действие
New (Создать новый)
Позволяет создавать файлы различных типов. Тип файла указывается в раскры вающемся окне New
Open (Открыть)
Открывает диалоговое окно Open, в кото ром можно указать имя и тип файла, а за тем открыть указанный файл
Save (Сохранить)
Сохраняет файл на диске. Если файл толь ко что создан, то Лис предложит ввести имя этого файла
Print One Copy (Печать одной копии)
Печатает одну копию активного файла, содержимое окна Command или буфера обмена
Print Preview (Предварительный просмотр)
Отображает отчеты на экране такими, ка кими они будут после вывода на печать
Spelling (Орфография)
Запускает механизм проверки орфогра фии
Cut (Вырезать)
Удаляет выделенный текст или объект и помещает его в буфер обмена (Clipboard)
Сору (Копировать)
Создает копию выделенного текста или объекта и также помещает ее в буфер об мена
Paste (Вставить)
Копирует в указанную тобой позицию со держимое буфера обмена
Undo (Отменить)
Отменяет последнее действие
Redo (Повторить)
Снова выполняет отмененное действие
Run (Выполнить)
Дает команду на выполнение текущего файла. Что выполняется? Да все, что угод но — программа, форма или отчет
Modify Form (Изменить форму)
Открывает окно Form Designer (Конструк тор форм) в котором можно модифициро вать экранную форму
Раскрывающийся список Databases (Базы данных)
В нем отображается активная в данный момент база данных
36
Часть I. Процедурное программирование в Visual FoxPro Таблица 3.10 (окончание)
Название кнопки (команды)
Действие
Command Window (Командное окно)
Управляет отображением на экране окна для ввода команд
Data Session Window (Окно сеанса данных)
Управляет отображением на экране окна Data Session (Сеанс данных)
Form (Форма)
Запускает Form Wizard (Мастер экранных форм)
Report (Отчет)
Запускает Report Wizard (Мастер отчетов)
Auto Form Wizard (Автоматический построитель экранной формы)
Для выбранной таблицы запускается по строитель, который автоматически строит экранную форму для данной таблицы
Auto Report Wizard (Автоматический построитель отчета)
Для выбранной таблицы запускается по строитель, который автоматически строит отчет для данной таблицы
Help (Помощь)
Открывает доступ к разделам справочной системы
Панели инструментов также можно перемещать по экрану. Для этого нужно щелкнуть мышью на свободное от кнопок место и, удерживая нажатой ле вую кнопку мыши, переместить панель. Размеры панели инструментов тоже можно изменить, подведя указатель мыши к границам панели инструмен тов.
Рабочий стол Рабочий стол — это такой белый фон, который ты видишь на своем мони торе после запуска Visual FoxPro. Дело в том, что наш Лис не может вот так просто взять и выдать что-нибудь на рабочий стол Windows. Но при вводе соответствующих команд это "что-нибудь" (конечно, я имею в виду сообще ние или результат вычислений) появляется на рабочем столе Visual FoxPro. Как? Скоро увидим!
Командное окно Командное окно используется для ввода команд на языке программирова ния Visual FoxPro. Его "графическое" поведение полностью аналогично дру гим окнам Windows, т. е. его положение и размеры на экране можно менять способами, применяемыми и для других окон. Как это сделать — описано ранее.
Урок 3. Главное окно Visual FoxPro
37
Теперь поговорим о вводе команд. Вообще, используя практически любую версию Visual FoxPro, можно при разработке приложения ни разу не обра титься к этому окну и, соответственно, никакие команды в нем не писать. Но т. к. мы с тобой учимся, мы введем нашу первую команду, а если по большому счету — напишем программный код на языке программирования Visual FoxPro. (Музыка, туш!) Во многих учебниках по различным языкам программирования в качестве первой программы используется следующий пример — пользователю пред лагается поприветствовать мировое сообщество, выдав на экран сообщение "Hello,World!" He станем изменять традициям: в командном окне набери следующее — см. рис. 3.2 — и нажми клавишу <Enter>.
Рис. З.2. Ввод команд
Ну и как, впечатляет? Согласен, не очень. Зато ты понял, как работает ко мандное окно — набираешь команду, жмешь <Enter> — и результат не за ставит себя ждать. Но это еще не все. Командное окно имеет замечательную особенность, ко торой не было в предыдущих версиях FoxPro — теперь в нем можно выпол нить многострочный программный код. Набирая следующий пример (лис тинг 3.1), не жми клавишу <Enter>, а для перехода на следующую строку используй клавиши управления курсором.
38
Часть I. Процедурное программирование в Visual FoxPro
Листинг 3.1. Пример многострочного программного кода cmessage = "Hello, World !" cname = "My name is ...." @10,15 SAY cmessage FONT "arial",16 012,15 SAY cname FONT "arial",16
Теперь выдели мышью все эти строки и нажми клавишу <Enter>. Другой вариант — щелкни правой кнопкой мыши на окно ввода команд и в появившемся меню выбери пункт Execute Selection (Выполнить выделен ное) — рис. 3.3.
Рис. 3.3. Выполнение многострочного кода
Строка состояния Строка состояния расположена в нижней части главного окна Visual FoxPro. Этот элемент можно условно разделить на две части: область сообщений и индикаторы.
Урок 3. Главное окно Visual FoxPro
39
Область сообщений используется различными конструкторами для отобра жения позиции расположенных в них объектах. Если же открыта какаянибудь таблица, то в области сообщений будут показаны ее параметры. • Имя таблицы. • Имя базы данных (в скобках). • Номер записи. • Общее количество записей в таблице, а также способ доступа к файлу: • Exclusive — однопользовательский, или монопольный доступ; • Record unlocked — запись разблокирована; • Record locked — запись заблокирована. Также в этой области могут отображаться различные системные сообщения. В правой части строки состояния расположены четыре индикатора или ин дикаторные поля, причем три из них видны всегда, а вот для отображения четвертого необходимо ввести соответствующую команду или изменить на стройки Visual FoxPro. Как это делается — показано дальше В первом показано, была ли нажата клавиша — в этом случае в данном индикаторном поле отображаются символы OVR и редактор Visual FoxPro работает в режиме вставки. Символы NUM во втором индикаторном поле отображаются, если включе на клавиша . Третий индикатор показывает состояние клавиши — если она включена, в данном поле появляется сообщение CAPS. И наконец, имеется четвертый индикатор, в котором отображается текущее время. Чтобы его включить, можно ввести в командном окне команду SET CLOCK STATUS или выбрать в системном меню пункты Tools | Options (Инст рументы | Опции) и в диалоговом окне Options (Опции) выбрать вкладку View (Вид). Все! Более или менее разобрались с интерфейсом и теперь переходим к сле дующему уроку, где узнаем еще очень много полезного.
УРОК 4
Знакомство с диспетчером проекта При разработке практически любого приложения используется проект, ко торый помогает организовать все файлы на основе их типа, а также объеди няет все компоненты приложения для последующей их компиляции и соз дания либо исполняемого файла с расширением ехе, либо файла приложе ния с расширением арр. Можно еще сделать и файл динамической библиотеки — dll. Сам файл проекта имеет расширения pjx и pjt. Для того чтобы создать новый проект, необходимо выполнить одно из сле дующих действий: • в пункте системного меню File (Файл) выбрать команду New (Новый' файл); • нажать кнопку New (Новый) на стандартной панели инструментов. В любом из этих случаев откроется диалоговое окно New (Новый), в кото ром нужно указать, что именно мы хотим создать (рис. 4.1). Опция Proje (Проект) уже установлена по умолчанию (что нам и требуется). Нажмем кнопку New file (Новый файл). Появится диалоговое окно Сгеа (Создать) (рис. 4.2). В поле Enter project (Введите имя проекта) нужно вве сти имя нового проекта, также необходимо указать папку, в которой он бу дет сохранен. По умолчанию в поле Enter project (Введите имя проекта) уже стоит им проекта — projl. Его, естественно, можно заменить на другое. Итак, вводим имя своего приложения и щелкаем кнопку Сохранит (Save) — файл создан, открывается окно Project Manager (Диспетчер проек та) (рис. 4.3). В верхней части этого окна расположено шесть вкладок. В табл. 4.1 поясня ется их назначение. Все элементы проекта показываются в виде иерархического списка. Есл какой-нибудь элемент содержит в себе другие элементы, то слева от это
Урок
4.
Знакомство с диспетчером
Рис. 4 . 1 . Диалоговое окно New
проекта
41
Рис. 4.2. Диалоговое окно Create
Таблица 4.1. Вкладки окна Project Manager Наименование
Для чего используется
All (Все)
Показываются все файлы, включенные в проект
Data (Данные)
Базы данных, таблицы, виды, запросы и хранимые про цедуры
Documents (Документы)
Экранные формы, отчеты, этикетки
Classes (Классы)
Классы и библиотеки классов
Code (Программы)
Программы, библиотеки
Other (Другие)
Текстовые файлы, меню и прочие типы файлов
элемента показан знак "+". Не очень понятно? А ты шелкни, к примеру, на "плюсик" рядом с элементом Data (Данные). Теперь ясно? Справа вверху в окне диспетчера проекта расположена кнопка со стрелкой, при нажатии на которую окно проекта сворачивается (рис. 4.4). При щелчке на заголовке какой-нибудь вкладки откроется только вкладка, изображенная на рис. 4.5. Более того, вкладку можно "ухватить" мышью и переместить в любое место экрана (рис. 4.6).
42
-
Часть I. Процедурное программирование в Visual FoxPro
Рис. 4.З. Окно Project Manager
Рис. 4.4. Свернутое окно Project Manager
Рис. 4.5. Диалоговое окно Project Manager с открытой вкладкой Documents
А обратил ли ты внимание, что при работе с диспетчером проекта в систему ном меню Visual FoxPro появился еще один пункт — Project (Проект)? В этом пункте меню содержатся команды, работающие с файлами проек та — табл. 4.2. :]
Урок 4. Знакомство с диспетчером проекта
43
Рис. 4.6. Перемещение вкладок по экрану
Таблица 4.2. Команды меню Project Команда
Описание
New File (Новый файл)
Создает новый файл, который добавляется в проект автоматически
Add File (Добавить файл)
Добавляет в проект ранее созданный файл
Modify File (Изменить файл)
Модифицирует файл, включенный в проект
Browse File (Просмотреть файл)
Открывает файл в режиме Browse (таблич ный просмотр)
^Rename File (Переименовать)
Позволяет переименовать указанный файл
Preview (Просмотр)
Предварительный просмотр файла
Remove (Удалить)
Удаляет указанный файл из проекта
Exclude (Исключить)
Исключает указанный файл из проекта
Set Main (Главная программа)
Устанавливает указанный файл в качестве главной программы проекта
44
Часть I. Процедурное программирование в Visual FoxPro
Таблица 4.2 (окончание) Команда
Описание
Edit Description (Редактировать описание)
Открывает окно для редактирования описа ния файла
Project Info (Информация о проекте)
Информация о проекте
Errors (Ошибки)
Показываются ошибки, возникшие при по строении проекта
Build (Построить)
Перестраивает весь проект
Refresh (Обновить)
При выборе данной команды обновляется вся информация в окне диспетчера проекта
Cleah Up Project (Упаковать)
Упаковывает проект, удаляя из него ненуж ные файлы
Также в окне диспетчера проекта имеется шесть кнопок (рис. 4.7). Дейст вия, происходящие после их нажатия, практически идентичны соответст вующим пунктам меню Project (Проект), поэтому мы не будем подробно останавливаться на их описании.
Рис. 4.7. Кнопки диалогового окна Project Manager
УРОК 5
Первое приложение Наконец-то! Дождались! Понимаю, понимаю твою радость. Действительно, наверное, довольно скучно разглядывать всякие таблицы, читать описания команд, но что поделать... Без этого тебе бы пришлось всю жизнь всем рас сказывать, какой ты "крутой" программист. Чтобы такого не случилось, мы приступаем к практическим занятиям. Так как основу любой базы данных составляют таблицы, будет вполне ло гичным, если мы сначала научимся работать именно с таблицами. Давай сделаем простенькое приложение, состоящее из одной свободной таблицы, экранной формы и отчета. Что бы такое придумать? Возьмем что-либо из школьной программы, на пример, сделаем приложение, которое будет решать квадратные уравнения. Этот пример хорош тем, что позволяет познакомиться с математическими функциями Visual FoxPro. Для начала создадим новую папку, где будут храниться наши примеры, и назовем ее examples. Теперь запускаем Visual FoxPro и начинаем конструировать новый проект, используя кнопку New (Новый) на стандартной панели инструментов и ука зав опцию Project в диалоговом окне New (Новый). В окне New нажимаем кнопку New File (Новый файл) и смотрим на монитор (рис. 5.1). В окне Create (Создать) в поле Enter project (Введите имя проекта) указыва ем имя нашего проекта, а используя раскрывающийся список Папка — имя нашей папки (examples) и нажимаем кнопку Сохранить. Открывается окно диспетчера проекта (рис. 5.2). Для того чтобы создать свободную таблицу, нам необходимо перейти на вкладку Data (Данные), выбрать пункт Free Tables (Свободные таблицы) и нажать кнопку New, после чего на экране появится окно New Table (Новая таблица) (рис. 5.3).
46
Часть I, Процедурное программирование в Visual FoxPro
Рис, 5.1. Диалоговое окно Create
Рис. 5.2. Диалоговое окно диспетчера проекта Equation
Рис. 5.З. Диалоговое окно New Table
Урок 5. Первое приложение
47
Что такое Table Wizard (Мастер таблиц), мы рассмотрим далее, а сейчас на жмем кнопку New Table (Новая таблица). Как видишь, открывшееся диалоговое окно Create (рис. 5.4) почти ничем не отличается от того окна, которое мы видели в самом начале, при создании проекта.
Рис. 5.4. Диалоговое окно Create
По умолчанию в поле Enter table уже стоит название таблицы tabiei. При необходимости его можно изменить на любое другое. Вводим имя, напри мер, mytab и нажимаем кнопку Сохранить. На экране появляется окно Table Designer (Конструктор таблиц). Там рас положено три вкладки: • Fields (Поля) — используется для определения полей таблицы; П Indexes (Индексы) — для определения индексов; П Table (Таблица) — отображает информацию о таблице. По умолчанию открыта вкладка Fields (Поле), и теперь самое время погово рить об именах полей и их типах. Имя поля в свободной таблице не может состоять из более чем 10 сим волов. В имени поля можно применять буквы, цифры и знак подчеркива ния. Использование знаков препинания, специальных символов и пробелов в имени поля не рекомендуется. Также имя поля не должно начинаться с цифры или знака подчеркивания. Пример допустимых имен: Abed, F
i r s t _ N a m e , Fox 6.
48
Часть I. Процедурное программирование в Visual FoxPro
Рис. 5.5. Диалоговое окно Table Designer
В Visual FoxPro ровно "чертова дюжина типов" полей — 13. На з а м е т к у В старших версиях Visual FoxPro, например в восьмой версии, есть еще один тип поля — Integer (Autolnc).
Рассмотрим их подробнее. Поля типа character являются одними из наиболее распространенных типов полей в таблицах. Они могут содержать от 1 до 254 символов — буквы, чис ла, пробелы, знаки препинания. Поля данного типа имеют фиксированную длину. Например, если у тебя есть поле размером в 10 символов, то оно и будет занимать ровно 10 символов, независимо от того, что в нем записано. Что это значит? А то, что если ты изменишь длину символьного поля в таб лице с данными, например уменьшишь ее, то все данные в полях character будут усечены до указанного размера. В полях типа character можно хранить не только символьные выражения, но и числа. Например, почтовый индекс или номер телефона. Для чего это делать? Во-первых, если число 000458 поместить в поле типа Numeric, то Лис уберет ведущие нули и получится 458. Во-вторых, чтобы не возникло "соблазна" произвести с ними какие-нибудь вычисления. Ну ты сам поду май, что хорошего получится, если мы по ошибке начнем складывать между собой номера телефонов и делить их на почтовые индексы? В общем, здесь рекомендация такая: если числа будут участвовать в матема тических вычислениях — смело помещаем их в поле Numeric. Если нет — в ы б и р а е м ТИП C h a r a c t e r .
Тип currency — поля данного типа используются для записи значений, вы ражающих денежные суммы. Максимальное допустимое значение находится
Урок 5. Первое приложение
49
где-то в районе 922 триллионов. Не плохая цифра, правда? Дядюшка Скрудж из диснеевского мультика просто бы умер от зависти, узнай он про нашего дядюшку Лиса. Ну а если ты тоже любишь считать денежки, вот тебе точный диапазон допустимых значений поля типа currency: от -922 337 203 685 477,5807 до 922 337 203 685 477,5807 Тип Date — для работы с датами. Даты могут принимать значения от 1 января 01 года (от Рождества Христова) до 31 декабря 9999 года (это уж точно конец света...). Тип DateTime — почти то же, что и Date, только еще позволяет хранить по мимо дат время в диапазоне от 12,00,00 am до 11,59,59 р т . Тип Logical — информация, хранимая в этих полях, может принимать только два значения — .Т. (True) (Истина) или .F. (False) (Ложь). Исполь зуется для указания наличия или отсутствия каких-нибудь свойств, призна ков. Например, выражение типа "кошка/собака" может принимать только одно значение, потому что собака не может быть одновременно и собакой и кошкой. Тип Memo — для символьных данных большого объема. А что такое "боль шой объем"? Принцип следующий: если информация не помещается в поле C h a r a c t e r , Т. е. б о л ь ш е 2 5 4 СИМВОЛОВ — ИСПОЛЬЗуеМ ПОЛе Memo.
Тип character (binary) используется в тех случаях, когда нам не требуется для отображения данных учитывать кодовую страницу. Тип integer используется для хранения целых чисел. Возможный диапазон значений от -2 147 483 547 до 2 147 483 547. Тип General — поля данного типа предназначены для хранения изображе ний и другой информации в двоичном виде. Можно сказать, что это спе циализированное поле Memo. ТИПЫ N u m e r i c И F l o a t ИСПОЛЬЗУЮТСЯ ДЛЯ р а б о т ы С ЧИСЛОВЫМИ ДЭННЫМИ И
отображают числа в диапазоне от -0,9999999999*1019 до 0,9999999999*Ю20. Тип Double применяется для хранения данных с высокой точностью: от 4,94065658541247*10324 до 1,79769313486232*10308. Перед тем как начать конструировать нашу таблицу, необходимо опреде лить, данные какого типа будут храниться в полях таблицы, и, соответст венно, назначить типы полей. Насколько я помню, один из способов решения квадратного уравнения имеет примерно такой вид: ах2 + Ьх+с=0 d =
b2-
4ас
xl=(-b+sqrt(d)/2*a x2=(-b-sqrt(d)/2*a
50
Часть I. Процедурное программирование в Visual FoxPro
здесь sqrt (d) не что иное, как просто квадратный корень из d. Я специаль но записал это выражение именно так, чтобы сразу познакомить тебя с функцией FoxPro, которая возвращает значение квадратного корня. Итак, для решения нашей задачи нам понадобятся поля типа Numeric, в ко торых мы будем хранить значения а, ъ, с, d, xi и х2, одно символьное поле типа character и возьмем, пожалуй, еще поле типа Date. Начинаем определять структуру таблицы mytab. Для этого на вкладке Fields (Поля) окна Table Designer (Конструктор таб лиц) имеется несколько "столбцов" (рис. 5.6).
Рис. 5.6. Определение структуры таблицы mytab
Первый столбец, Name (Имя), используется для ввода имени поля, причем имя не должно повторяться, иначе Лис "обидится" и выдаст соответствую щее сообщение о недопустимости ввода двух полей с одинаковым именем. Вводим имя нашего первого поля, пусть это будет first_a. Введя хотя бы один символ, мы уже видим, что столбец Туре (Тип) принял вид раскры вающегося списка, из которого можно выбирать соответствующие значения, щелкая мышью на нужной строчке. По умолчанию стоит тип character. Так как мы будем иметь дело с числами, необходимо установить тип Numeric. При нажатии клавиши фокус получает следующий столбец — Width (Ширина), в котором указывается размер поля. Значения можно вводить с клавиатуры, а можно использовать счетчик, т. к. данный элемент представ ляет собой объект spinner (Поле ввода со счетчиком). Просто нажми мышью на нужную кнопку счетчика справа от поля ввода и все. Счетчик сначала будет работать довольно медленно, но затем раскрутится почти до космических скоростей. Главное здесь — вовремя остановиться.
Урок 5. Первое приложение
51
Следующий столбец вкладки Fields — Decimal (Десятичные знаки). Данная опшя доступна только для полей типа Numeric и позволяет задать количест во знаков в числе после запятой. Надо учитывать, что количество знаков не добавляется к общему размеру поля, а выделяется из него, т. к. общий раз мер определяется параметром Width. Столбец Index используется для того, чтобы определить порядок отображе ния записей — по возрастанию (Ascending) или по убыванию (Descending). Если индекс (о них разговор пойдет далее) не определен, то Visual FoxPro при помощи данной опции автоматически его создаст. И последний столбец этой вкладки NULL устанавливает, допустимы ли для данного поля значения NULL. После определения имен и типов полей наша табличка примет вил, пока занный на рис. 5.7.
Рис. 5.7. Мы закончили определение структуры таблицы
Маленькие кнопки, расположенные слева от имен полей, служат для изме нения порядка отображения полей при просмотре таблицы. Можешь смело менять их местами, это никак не повлияет на результат вычислений. После всех этих несложных манипуляций необходимо сохранить плоды на шей титанической работы. Для этого нажмем кнопку ОК. Да, я же не рас сказал о назначении кнопок в окне конструктора таблиц! Действия этих элементов управления нехитрые: • ОК — сохраняет структуру таблицы; • Cansel — отмена проведенных изменений; • Insert — вставка нового поля; • Delete — удаление указанного поля.
52
Часть I. Процедурное программирование в Visual FoxPro
Итак, мы только нажали кнопку ОК, а хитрющий Лис уже интересуется, будем ли мы вводить записи в нашу таблицу прямо сейчас (рис. 5.8).
Рис. 5.8. Запрос на ввод записей
Совершенно необязательно сразу после создания таблицы приступать к вво ду значений. Но мы все же ответим Yes (Да) и нажмем соответствующую кнопку в диалоговом окне запроса. После этого наша таблица откроется в режиме добавления записей (Append Mode), и мы введем наши первые дан ные (рис. 5.9).
Рис. 5.9. Таблица в режиме ввода данных
Ввод данных осуществляется с клавиатуры, а для перехода к следующему полю можно использовать клавиши управления курсором. Вообще же пере ход происходит автоматически: заносим данные, нажимаем <Enter> и указа тель устанавливается на следующее поле. В данном режиме поля показаны "столбиком", т. е. вертикально. Для разделения записей используется тонкая пунктирная линия. После заполнения первой записи указатель автоматиче ски устанавливается на следующую, и мы можем продолжить ввод данных.
Урок 5. Первое приложение
53
В нашем случае нет необходимости заполнять все поля и поэтому мы, введя единственную запись (см. рис. 5.9), закрываем это окно. Для закрытия ис пользуем стандартные методы Windows: щелкаем на кнопку с крестиком в правом верхнем углу окна или используем соответствующую команду меню, щелкнув на пиктограмме в левом верхнем углу. Также для закрытия этого окна можно воспользоваться комбинацией клавиш +<W>. Давай теперь посмотрим на диалоговое окно диспетчера проекта (Project Manager) (рис. 5.10). Видно, что наша таблица автоматически добавлена в проект, ее имя находится в разделе Free Tables вкладки Data. Слева от име ни расположены два значка: перечеркнутый кружок и знак +. Если мы на жмем на знак +, то увидим список полей нашей таблицы.
Р И С . 5.10. Таблица добавлена в проект
Перечеркнутый кружок означает, что при компиляции проекта данный файл компилироваться не будет. Внизу, под надписью Description (Описа ние) указан полный путь (Path) к нашему файлу. Просмотреть и отредактировать данные в таблице можно, нажав кнопку Browse (Просмотр) (рис. 5.11). С данными мы более или менее разобрались, таблица готова и пришло вре мя заняться непосредственно интерфейсом нашего приложения, для чего мы переходим к следующему уроку, где начнем создавать экранные формы.
54
Часть I. Процедурное программирование в Visual FoxPro
Рис. 5.11. Таблица в режиме просмотра
УРОК 6
Экранная форма. Первое знакомство Любое серьезное приложение просто "обязано" иметь как минимум одну экранную форму, потому что именно экранная форма является тем основ ным средством, которое позволяет пользователю взаимодействовать с дан ными. Каждая экранная форма может состоять из неограниченного числа объек тов. Любой объект экранной формы имеет свои, присущие данному классу объектов свойства, которые мы можем редактировать. Также мы можем ука зать объекту действия, которые он будет выполнять при наступлении опре деленных событий. В общем, весь процесс создания экранной формы сводится к следующему: выбираем необходимые нам объекты, размещаем их в форме, определяем их свойства и задаем, какие действия они будут выполнять. Создать новую экранную форму можно различными способами: используя, в частности, Form Wizard или Form Designer. "Кто" такие эти загадочные Wizard, уже дважды нам встретившиеся, узнаем дальше, а пока будем "делать" экранную форму, используя Form Designer (Конструктор форм). Открыть окно конструктора форм можно различными способами. • Выполнить команду New (Новый) из меню File (Файл) и в открывшемся диалоговом окне New (Новый) нажать кнопку New File (Новый файл), предварительно установив опцию Form (Форма). • Нажать кнопку New (Новый) на стандартной панели инструментов. Дальнейшие действия, как в предыдущем способе. А спрашивается, к чему нам лишние движения мышью? В окне диспетчера проекта есть кнопка New (Новый), которая также позволяет создать новый файл, который к тому же будет автоматически добавлен в проект. Нужно только указать, какой именно файл мы хотим создать.
56
Часть I. Процедурное программирование в Visual FoxPro
Рис. 6.1. Диалоговое окно New Form
Для создания файла новой экранной формы необходимо перейти на вклад ку Documents (Документы) в окне диспетчера проекта, отметить пункт Forms (Формы) и нажать кнопку New (Новый). Открывается диалоговое окно New Form (Новая форма) (рис. 6.1), в кото ром услужливый Лис опять предлагает для создания формы воспользоваться мастером экранных форм (Form Wizard). Но мы с тобой уже договорились, что использование мастеров рассмотрим позднее, поэтому мы нажмем кнопку New Form (Новая форма), после чего перед нами во всей красе от кроется окно конструктора форм.
Окно конструктора форм (Form Designer) В окне конструктора форм (рис. 6.2) содержатся следующие объекты: • макет экранной формы (по умолчанию он назван Forml); • панель инструментов Form Controls (Элементы управления); • панель Color Palette (Палитра цветов); • панель Layout (Расположение); • окно редактирования Properties (Свойства); • окно среды данных (Data Environment). Отобразить эти объекты на экране, или наоборот, скрыть их можно, устано вив либо сняв соответствующие флажки в меню View (Вид). Кратко рассмотрим функции этих объектов. • Панель Color Palette (Палитра цветов) управляет цветом фона экранной формы, а также цветом элементов формы. • Панель Layout (Расположение) управляет размерами и размещением объ-1 ектов в экранной форме. • Окно Data Environment (Среда данных) отображает элементы среды дан ных (таблицы, виды), с которыми работает экранная форма. • Окно Properties (Свойства) содержит все свойства, методы и события, связанные с объектами формы, и позволяет их редактировать.
Урок 6. Экранная форма. Первое знакомство
57
• Панель Form Controls {Элементы управления), несомненно, является ос новной панелью инструментов в окне Form Designer, поэтому ее необхо димо рассмотреть подробнее (рис. 6.3). Описание кнопок этой панели приведено в табл. 6.1.
Рис. 6.2. Диалоговое окно Form Designer
Рис. 6.3. Панель инструментов Form Controls
Таблица 6.1. Кнопки панели Form Controls
58
Часть I. Процедурное программирование в Visual FoxPro Таблица 6.1 (продолжение)
Урок 6. Экранная форма. Первое знакомство
59 Таблица 6.1 (продолжение)
60
Часть I. Процедурное программирование в Visual FoxPro Таблица 6.1 (окончание)
Окно свойств (Properties) Еще одним абсолютно необходимым элементом, используемым при разра ботке экранных форм, является окно свойств (Properties) (рис. 6.4).
Рис. 6.4. Диалоговое окно Properties
Урок 6. Экранная форма. Первое знакомство
61
Если данное окно не отображено на экране, его можно вызвать, установив флажок на соответствующем пункте меню View (Вид), или воспользоваться командой контекстного меню, которое вызывается нажатием правой кнопки мыши в любом месте окна конструктора форм (рис. 6.5).
Рис. 6.5. Использование контекстного меню для отображения окна Properties
Также можно воспользоваться кнопкой Properties (Свойства) на стандарт ной панели инструментов Visual FoxPro. Именно используя это окно, мы с тобой можем редактировать свойства, события и методы экранной формы и ее объектов. Окно свойств можно условно разделить на две части: в левой, на сером фо не, перечислены названия всех свойств, методов и событий объектов (в дан ном случае макета формы), а в правой, на белом фоне, — значения этих свойств (событий, методов). Еще там могут быть надписи типа Default и User Procedure. default — это установка по умолчанию, если ты ее изменишь, вместо нее появится текст User Procedure (Процедура, определенная пользователем). Если же значение свойства (метода, события) выделено курсивом — Можешь Не мучаться, ты все равно его не изменишь, потому что курсив в этом случае
62
Часть I. Процедурное программирование в Visual FoxPro
означает, что данное свойство (метод, событие) в режиме разработки дос тупно только для чтения. Также в окне свойств имеется пять вкладок: О All — отображает все свойства, методы и события для данного объекта (рис. 6.6);
Рис. 6.6. Вкладка All окна Properties
Рис. 6.7. Вкладка Data окна Properties
• Data — отображает только те свойства, которые имеют отношение к дан ным (рис. 6.7); • Methods — отображает все методы и события объекта (рис. 6.8);
Рис. 6.8. Вкладка Methods окна Properties
Урок 6. Экранная форма. Первое знакомство
_ _ _ _ _ _ _ _ ^ _ ^ _
63
П Layout — здесь находятся только те свойства, которые "отвечают" за ото бражение объекта на экране (рис. 6.9); П Other — другие свойства объекта (рис. 6.10).
Рис. 6.9. Вкладка Layout окна Properties
Рис. 6.10. Вкладка Other окна Properties
Конструирование экранной формы Теперь переходим к самому процессу конструирования экранной формы. Так как источником данных для нашей формы является таблица mytab, пер вое, что нам необходимо сделать, — это "указать" форме, что она будет ра ботать именно с данной таблицей. Для чего необходимо выполнить сле дующее: 1. Открываем диалоговое окно Data Environment (Среда данных), восполь зовавшись соответствующим пунктом контекстного меню экранной формы. Автоматически откроется окно Open (Открыть), в котором мож но выбрать таблицу или представление данных. 2. На экране появится окно Add Table or View (Добавление таблицы или вида) (рис. 6.12), в котором указаны все таблицы, входящие в открытую в этот момент базу данных. Если нет открытой базы данных (как в на шем случае), список Tables in database (Таблицы в базе данных) будет пустым. Для добавления других свободных таблиц воспользуемся кноп кой Other (Другие). 3- Откроется диалоговое окно Open (Открыть) (рис. 6.13), в котором выби раем нужную таблицу и нажимаем кнопку ОК — таблица будет добавле на в среду данных нашей формы (рис. 6.14).
64
Часть I. Процедурное программирование в Visual FoxPro
Рис. 6.11. Диалоговое окно Data Environment после выбора таблицы или представления данных
Рис. 6.12. Диалоговое окно Add Table or View
При щелчке на данной таблице правой кнопкой мыши раскрывается кон текстное меню, с помощью которого можно просмотреть таблицу, выбрав команду Browse (Просмотр), или удалить таблицу из среды данных — команда Remove (Удалить). Воспользовавшись этой командой, я и удалю таблицу tabie2 из среды данных. Она применялась в качестве наглядного примера и больше нам не нужна. В последнем случае таблица удаляется только из среды данных, на диске она, естественно, останется.
I
Урок 6. Экранная форма. Первое знакомство
65
Рис. 6.13. Диалоговое окно Open
Рис. 6.14. Диалоговое окно Data Environment с новой таблицей
Теперь, когда необходимые таблицы добавлены в среду данных, можно за крыть диалоговое окно Data Environment (Среда данных) и перейти непо средственно к созданию формы. Так как в форме будут находиться различные объекты, нам необходимо научиться размещать их в макете формы. Зак Ю02
66
Часть I. Процедурное программирование в Visual FoxPro
Размещение элементов управления в экранной форме Для размещения элемента управления в экранной форме необходимо вы брать этот элемент на панели Form Controls, нажав соответствующую кнопку. Например, начнем с размещения в форме элемента управления типа TextBox (Поле ввода). Для этого нажмем соответствующую кнопку на пане ли Form Controls, а затем, указав мышью в макете формы предполагаемое место, нажмем левую кнопку мыши. Все, элемент управления размещен в форме (рис. 6.15).
Рис. 6.15. Размещение элемента управления TextBox в экранной форме
При встраивании элемента управления в форму вокруг этого объекта pacnoлагаются восемь маленьких черных точек. Их наличие говорит о том, что объект выделен и в окне Properties (Свойства) будут отображаться свойства, методы и события, присущие только данному объекту. Более того, при установке указателя мыши на любую из этих точек указатель примет вид двунаправленной стрелки, что позволяет изменять линейные размеры объектам Это делается путем нажатия и удерживания левой кнопки мыши. А изменить положение всего объекта в форме тоже довольно легко — нужно толь ко установить указатель "внутрь" элемента управления и так же, используя левую кнопку мыши, перетащить его в необходимое место. Теперь немного поговорим об именах элементов управления. Как ты уже! заметил, при встраивании элемента управления TextBox он получил имz Textl. Эти имена Visual FoxPro устанавливает сам, и если мы разместим в нашей форме еще один объект TextBox, то он будет по умолчанию иметь имя Text2. Аналогично Лис поступает и с другими элементами управления. Имена объектов при необходимости можно легко изменить — в окне Properties данное свойство так и называется Name (Имя).
Урок 6. Экранная форма. Первое знакомство
67
Но следует отметить, что имена типа Texti, Text2 и т. д. Visual FoxPro при сваивает в том случае, когда мы для размещения объектов в форме исполь зуем панель Form Designer. Если же мы размещаем объекты, в частности поля таблиц, путем их перетаскивания из окна Data Environment (Среда ок ружения), или пользуемся услугами Form Wizard — в этом случае имя объ екта будет совпадать с именем поля. Теперь добавим в нашу форму объект Label (Этикетка), который будет со держать текст, и подкорректируем размеры поля ввода Textl (рис. 6.16).
Рис. 6.16. Мы вставили в форму еще один элемент управления (Label) и изменили некоторые свойства
После вставки в форму объекта Label мы видим, что надпись в этом объекте совпадает с его именем (Labeli). Нас это не устраивает и мы меняем ее, ис пользуя свойство caption (Заголовок) в окне свойств экранной формы. Та ким же образом мы корректируем некоторые другие свойства объектов: • для объекта TextBox устанавливаем свойство FontBoid равным .т. (жир ный шрифт), свойство Fontsize (размер шрифта) устанавливаем рав ным 22 и немного изменяем его размеры; • для объекта Label также устанавливаем жирный шрифт, размер шрифта принимаем равным 26 и используем еше одну установку — свойство AutoSize (Авторазмер) устанавливаем в .т. — границы объекта "подго няются" под размер шрифта и длину заголовка, в противном случае текст будет обрезан. Теперь нам необходимо разместить в форме остальные объекты. Чтобы ус корить данный процесс, мы воспользуемся кнопками Сору (Копировать) и
68
Часть I. Процедурное программирование в Visual FoxPro
Paste (Вставить), расположенными на стандартной панели инструментов. Для того чтобы указать Лису, что именно мы будем копировать, нужный объект должен быть выделен. Выделить объект можно, произведя на нем щелчок мышью. А если необходимо выделить не один объект, а несколько, как в нашем случае? Не волнуйся, все предусмотрено! Нужно просто нажать клавишу <Shift> и, удерживая ее, щелкать мышью на необходимых элемен тах управления. Еще способ: нажать левую кнопку мыши в любом свобод ном месте макета формы (при этом указатель примет вид руки) и обвести нужные элементы так, чтобы они оказались внутри пунктирного контура. После выделения необходимых объектов щелкаем кнопку Сору — наши объекты окажутся скопированными в буфер обмена. Извлечь их из этого таинственного буфера можно, используя кнопку Paste на этой же панели инструментов. Нужно просто указать мышью на предполагаемое место рас положения этих объектов и нажать кнопку Paste. Команды копирования и вставки доступны также из системного меню Visual FoxPro и из контекстного меню, которое, как ты уже знаешь, вызывается щелчком на объекте правой кнопкой мыши. После вставки элементов управления нам остается только подкорректиро вать их размеры и изменить необходимые свойства. Я сделал следующее: элементы управления Text2, Text3, Labei2 и Labei3 разместил с помощью команд копирования и вставки (их можно считать "клонами" объектов Texti и Labeli), элемент управления Text4 добавил обычным способом (рис. 6.17).
Рис. 6.17. Размещение элементов управления TextBox и L a b e l в экранной форме
В Visual FoxPro реализован еще один интересный способ размещения эле ментов управления, помимо указанных ранее. Оказывается, их можно легко "перетащить" из окна Data Environment (Среда данных). Для чего нужно от крыть это окно, поставить указатель мыши на необходимое поле таблицы и, удерживая нажатой левую кнопку мыши, просто перетащить его в нужное место экранной формы. Перенесем таким образом поля xi и х2 из нашей т а б л и ц ы mytab (рИС. 6.18).
Урок 6. Экранная форма. Первое знакомство
69
Рис. 6.18. Поля xl и х2 мы перетаскиваем на экранную форму прямо из диалогового окна Data Environment
Несмотря на то, что мы "тащили" одно поле из таблицы, в экранной форме появляется два объекта: Label и TextBox. Это наш заботливый Лис услужли во создал объект Label и даже подписал его, назвав так же, как и имя поля. А теперь, если интересно, загляни в свойства этих объектов, в частности, посмотри свойство Name (Имя). Ну, что я говорил? Продолжаем работу над формой. Теперь, когда у нас есть поля, в которые мы можем вводить данные, встает вопрос — а что с этими данными, собст венно, делать? Нам — ничего! Пусть Лис сам с ними что хочет, то и "дела ет", а вот что именно: тут-то мы и должны ему подсказать. Но прежде чем давать ему советы и инструкции, необходимо связать наши объекты TextBox с полями таблицы mytab. Выделяем объект Texti и переходим на вкладку Data (Данные) в окне свойств. Находим свойство controisource (Источник Данных) и из раскрывающегося списка вверху, в котором перечислены все поля нашей таблицы, выбираем поле F i r s t a (рис. 6.19). Таким же образом устанавливаем свойство controisource для остальных элементов: • Text2 — mytab.second_b; • Text3 — mytab.third_c; • Text4 — mytab.result.
70
Часть I. Процедурное программирование в Visual FoxPro
Рис. 6.19. Устанавливаем источник данных для элемента управления T e x t l
Замечание Перед именем поля стоит имя таблицы. Это так называемый псевдоним или a l i a s . Все дело опять же в том, что любая таблица открывается в своей рабо чей области и Visual FoxPro может обращаться к ней, используя псевдоним, ко торый в данном случае совпадает с именем нашей таблицы.
А ты обратил внимание, что при назначении источника данных я не упомя нул объекты txtx1 и txtx2? Я не забыл про них, просто при размещении этих объектов в экранной | форме мы использовали метод перетаскивания из окна среды данных, а в этом случае Visual FoxPro сам назначает источник данных. В этом легко! убедиться, посмотрев значения свойств в диалоговом окне Properties. На заметку Для того чтобы определить значения свойств элементов управления, вовсе не обязательно метаться мышью между макетом формы, выделяя в нем нужный | элемент, и диалоговым окном Properties. Дело в том, что в самой верхней час ти диалогового окна Properties имеется раскрывающийся список, в котором пе- j речислены все объекты, входящие в макет экранной формы. Всего-то и нужно, | что выбрать необходимый. Для экономии времени некоторые свойства, например Fontsize и т. п., можно | установить одинаковыми сразу для нескольких объектов. Для этого нужно про-1 сто выделить группу объектов и установить желаемое значение свойства для j всей группы. В этом случае в окне свойств вместо имени объекта появится надпись M u l t i S e l e c t i o n (Множественный выбор).
Урок 6. Экранная форма. Первое знакомство
71
Теперь разместим в нашей форме объекты в виде кнопок (commandButton) и запрограммируем действия, которые будут происходить после щелчка мышью на этих элементах управления. Для этого выберем на панели Form Controls соответствующую кнопку и вставим объекты в экранную форму (рис. 6.20).
Рис. 6.20. Мы только что разместили на экранной форме два новых элемента управления
Определим значения свойства Caption (Заголовок): П для элемента управления commandi установим Расчет; • для элемента управления command2 — выход. Соответствующие надписи появятся на изображении кнопок. Естественно, можно изменить размер шрифта, стиль написания и сам шрифт для данных элементов, редактируя соответствующие свойства. Давай, например, изменим цвет надписи на кнопке Выход — установим предупреждающий красный цвет, чтобы невнимательный пользователь не нароком ее не "щелкнул". За цвет надписей отвечает свойство Forecoior. При обращении к этому свойству в верхней правой части окна свойств появляется кнопка с тремя точками, по нажатию которой отображается панель Цвет (рис. 6.21). Вы бираем нужный и нажимаем кнопку ОК. В данном случае значение свойст ва ForeCoior устанавливается равным (255, о, 0), где цифры обозначают со отношение красной, зеленой и синей составляющих. Данное свойство мож но изменять программно, используя соответствующую функцию RGB. Также для этой цели можно воспользоваться уже немного знакомой нам панелью Color Palette (Цвет) (рис. 6.22). В качестве примера установим зе леный цвет для надписи в поле txtxi, а цвет фона для этого поля сделаем Желтым. О Foreground color — цвет шрифта ( ). Выделяем объект (txtxi), нажима ем эту кнопку и выбираем желаемый цвет.
72
Часть I. Процедурное программирование в Visual FoxPro
Рис. 6.21. Изменение цвета надписи на кнопке с использованием окон Properties и Цвет
Рис. 6.22. Панель Color Palette
• Background color — цвет фона
. Действия точно такие же.
• Other colors — другие цвета . По нажатию этой кнопки отображает-1 ся уже знакомая нам панель Цвет. Теперь давай вернем данному объекту первоначальные значения: не стоит злоупотреблять цветами, раскрашивая формы во все цвета радуги — некото рых пользователей это может раздражать, а изменить самостоятельно дан ные параметры неподготовленному человеку затруднительно. Сейчас мы будем программировать те события, которые будут происходить| при нажатии наших кнопок. Начнем с кнопки Выход: 1. Выделим этот объект и, перейдя на вкладку Methods (Методы) окна Properties, установим указатель мыши на свойство ClickEvent. click, как ты уже догадался, означает щелчок мышью. Для того чтобы | определить действия, выполняемые нашим приложением при щелчке
Урок 6. Экранная форма. Первое знакомство
73
мышью на данном элементе управления, дважды щелкнем мышью на имени метода ciickEvent. При этом откроется новое окно, которое назы вается окно редактирования (рис. 6.23).
Рис. 6.23. Диалоговое окно редактирования программного кода
2. В раскрывающемся списке Object (Объект) перечислены все элементы управления, а в списке Procedure (Процедура) — все методы и события для данного объекта. Введем
в
окно
редактирования
для
события
click
команду
thisform.Release О И закроем его.
Теперь мы определили действия, происходящие при щелчке на кнопке Выход. Что же будет происходить? Все просто — форма закроется. В этой процедуре мы обратились к объекту "форма" (thisform) и предложи ли Лису выполнить команду RELEASE для этого объекта. Но в данном случае просто закроется только экранная форма, а вот для то го, чтобы закончить работу с Visual FoxPro, нужно ввести команду QUIT. Как видишь, программирование в СУБД Visual FoxPro не является чем-то Уж архисложным — все просто и естественно. Ты спросишь, а где тут про граммирование? А чем же ты, уважаемый, занимался в течение последних Ю минут? Именно программированием! Кнопка Расчет. Именно при нажатии этой кнопки будет решаться наше Уравнение. Открываем окно редактирования процедур и пишем программ ой код для события click (рис. 6.24).
74
Часть /. Процедурное программирование в Visual FoxPro
Рис. 6.24. Программный код для решения квадратного уравнения
Команды вводятся непосредственно в окно редактирования процедур. При] вводе команд совершенно не обязательно учитывать регистр букв — нашему; Лису абсолютно все равно, строчные или прописные буквы мы используем.) А еще у Visual FoxPro есть интересная особенность: необязательно вводить! полный текст команды, достаточно первых пяти символов. Например, вме-j сто Replace вполне достаточно ввести Repia. Рассмотрим подробнее действие команд. Программу мы начали с символа * (звездочка). Данный символ указывает,/ что вся следующая за ним строка будет использоваться как комментарий.^ Комментарий служит для подсказки или описания тех или иных действий И) ни в каких вычислениях, понятно, не участвует. Но символ * используется, только с начала строки, а если нам нужно поставить комментарий командой? Все просто: используем символы &&. Команда Replace заменяет значение поля на указанное выражение, которое; стоит после слова with. Этим выражением может быть практически все, чт* угодно: число, строка символов, другое поле или результат какого-нибудг вычисления. Правда, нужно учитывать тип поля. Например, при попьглс ввода в поле типа Numeric строки символов FoxPro автоматически сгенери^ рует сообщение об ошибке.
Урок 6. Экранная форма. Первое знакомство
75
Далее следует оператор выбора: do c a s e &&начало проверки c a s e
endcase &&конец проверки
И наконец, при помощи команды Refresh о перерисовываем окно формы, тем самым обновляя отображаемую в нем информацию. Все. Замечание При обращении к полю таблицы можно обойтись и без указания псевдонима таблицы, а обращаться непосредственно к именам полей. Так как у нас форма работает с одной таблицей (до других мы еще не дошли), то естественно, толь ко эта таблица будет открываться при вызове формы. Но если в среде данных экранной формы находится несколько таблиц, то такой "номер" может и не пройти. Поэтому лучше все-таки обращаться к полям нужной таблицы, исполь зуя псевдоним или команду Select.
Пусть тебя не смущает обилие скобок в командах Replace. Они нужны для того, чтобы расставить "очередность" при математических вычислениях, по тому что у Visual FoxPro имеются на этот счет свои правила, о которых мы и поговорим далее.
Операторы В Visual FoxPro достаточно большой выбор операторов, позволяющих ма нипулировать данными. Можно объединять несколько операций, создавая тем самым довольно сложные выражения, но следует помнить, что данные внутри каждого выражения должны быть одного типа. Опишем операторы, имеющиеся в Visual FoxPro (табл. 6.2—6.6). В таблицах выражения представлены в порядке расстановки приоритетов, т. е. сначала будет выполняться действие, занимающее верхнюю строчку, затем следую щее и т. д., в порядке убывания приоритета. Таблица 6.2. Символьные операторы Оператор
Описание Конкатенация двух символьных строк. Конкатенация — это "понаучному", а результатом действия этого оператора будет вот что: "Fox" + " P r o " = "FoxPro"
76
Часть I. Процедурное программирование в Visual FoxPro
^ ^ ^ ^
Таблица 6.2 (окончание) Оператор
Описание
-
Конкатенация с удалением конечных пробелов из первого выражения
$
Поиск одной символьной строки в другой
Таблица 6.3. Арифметические операторы Оператор
Описание
0
Группировка значений для повышения приоритета — сначала выполня ется выражение, заключенное в скобки
** или
А
Возведение в степень
+
Умножение
/
Деление
%
Остаток от деления
+
Сложение
-
Вычитание
Таблица 6.4. Операторы операций с датами Оператор
Описание
+
Сложение (результатом будет дата в будущем)
-
Вычитание
Таблица 6.5. Операторы отношений (сравнения) Оператор
Описание
Больше чем
=
Равно
! = ИЛИ # ИЛИ < >
Не равно
=
Больше или равно
==
Точно равно (применяется для символьных выражений)
___
Урок 6. Экранная форма. Первое знакомство
^
77
Таблица 6.6. Логические операторы
Оператор
Описание
0
Группировка значений для повышения приоритета - сначала выполняется выражение, заключенное в скобки
NOT ИЛИ !
Логическое отрицание
AND
Логическое умножение (И)
OR
Логическое исключение (ИЛИ)
"Украшение" формы Теперь, когда у нас все практически готово, осталось навести окончатель ный "лоск" в нашей форме и можно запускать ее в "первое плавание". Чтобы не смущать пользователя невразумительным названием Formi, из меним СВОЙСТВО Caption ДЛЯ макета формы: Caption=Решение квадратного уравнения.
Чтобы пользователь не мог изменять размеры формы (баловство все это!), установим значение свойства Border style (Стиль обрамления) равным 2 Fixed Dialog (Фиксированная двойная линия). Свойство AutoCenter (Автоматическое центрирование) установим ным . т. — наша форма всегда будет располагаться в центре экрана.
рав
Свойство ShowWindow имеет три значения: in screen (В окне Visual FoxPro), in тор LeveiForm (В форме верхнего уровня) и As Top Level Form (Как фор ма верхнего уровня). Значения этих свойств указывают, как будет работать наша форма: только в главном окне, внутри другой формы или как форма верхнего уровня. Установим значение As Top Level Form. У элемента управления Text4 установим свойство Alignment (Выравнивание) равным 2Center (По центру). Теперь добавим немного "крутизны", а именно: изменим вид указателя мы ши и установим фон для нашей формы. Свойство Picture (Изображение) позволяет использовать какой-нибудь ри сунок в качестве фона экранной формы. Желательно, чтобы все графиче ские файлы, которые ты используешь в приложении, находились в одном с ним каталоге (или подкаталоге). При нажатии кнопки с тремя точками откроется окно Open (Открыть) (Рис. 6.25), в котором можно выбрать необходимый графический файл. Флажок Preview (Просмотр) позволяет предварительно просмотреть изобра-
78
Часть I. Процедурное программирование в Visual FoxPro
жение. (К сожалению, для просмотра доступны файлы не всех графических форматов.) Указав нужный файл, нажимаем кнопку ОК.
Рис. 6.25. В диалоговом окне Open выбираем рисунок фона
Теперь выделим наши кнопки Расчет и Выход, и аналогичным способом выберем изображение, которое будет служить указателем мыши. (Свойство Mouse icon.) Свойство MousePointer (Указатель мыши) при этом необходимо установить равным 99 - Custom (Пользовательский). Ну и последний штрих — свойство Backstyle (Стиль фона) для объектов Label 1, Labei2 и Labei3 устанавливаем как Transparent (Прозрачный фон). После того как мы закончим работу в Конструкторе форм, Лис предложит сохранить новую форму под именем Formi. Что же, пусть будет Forml.
Запуск формы на выполнение Запуск формы — процедура не сложная. Вот возможные способы: • кнопка Run на стандартной панели инструментов; • команда Run Form из меню Form; • кнопка Run в окне диспетчера проекта; • ввод в окне Command следующей команды: do form forml. Запускаем форму и, вводя в поля нужные значения, решаем наши уравне-j ния. Но решать мы их будем до определенного момента, а именно пока нб| увидим сообщение, представленное на рис. 6.26.
Урок 6. Экранная форма. Первое знакомство
79
Рис. 6.26. Сообщение о программной ошибке
Вероятно, ты уже догадался, где мы совершили ошибку. Правильно, при вводе значения ноль в первое поле произойдет сбой, потому что Лис тоже немного знаком с математикой и знает, что на ноль делить нельзя. А мы этим и пытаемся его озадачить. Как тут быть? Говорить пользователям, что бы не вводили ноль в первое поле? Но это "не есть хорошо", из вредности (а они такие) — будут вводить. Нет, ничего им говорить не надо, а нужно сделать так, чтобы его невозможно было ввести! Сказано — сделано. Вы делим элемент управления Texti, в окне Properties найдем событие vaiidEvent, для которого в окне редактирования процедур введем следую щие команды: if this.value=0 this.backcolor = RGB(255,0,0) return .F. else t h i s . b a c k c o l o r = RGB(192,192,192) endif
Разберем, как все это работает. Команда if...endif немного похожа на уже знакомую нам docase. Ее син таксис следующий: &&начало проверки if else
endif &&конец проверки
Смысл здесь такой: если верно, выполняем , Иначе
ВЫПОЛНяеМ
.
Рассмотрим подробно условие: c
oбъeкт>.
=
80
Часть I. Процедурное программирование в Visual FoxPro
где — в нашем случае это value (значение), — в данном случае Texti, т. е. если значение объекта Texti равно 0, то выполняем сле дующие команды: • this.backcoior — устанавливает цвет фона объекта, определяемый функ цией RGB о (в данном случае красный цвет); • return— передает значение .F. свойству ErrorMessage (Сообщение об ошибке), которое и отображается на экране, если проверка Valid прошла успешно. Если мы в окне процедур для события ErrorMessage ничего не введем, то будет выдано сообщение invalidinput (Неверное значение). Но мы не станем пугать пользователя разными словами типа invalid, мы сделаем свое сообщение! В окне процедур для события ErrorMessage вводим: MessageBox ( "Вы ввели неверное значение. Пожалуйста, исправьте.", "Ошибка ввода данных")
MessageBox — опять что-то новое. Теперь на каждой странице тебе будет встречаться какое-нибудь незнакомое понятие. Но ты не отчаивайся — я все объясню. А этот самый messagebox — всего-навсего диалоговое окно с кнопками (рис. 6.27). Ты их уже видел не один раз.
Рис. 6.27. При вводе недопустимых значений появляется сообщение об ошибке
УРОК 7
Использование переменных Сейчас мы поговорим об еще одном типе данных, широко используемом в Visual FoxPro. Это переменные памяти. При их использовании необходимо соблюдать некоторые правила: • имя переменной не может содержать более 255 символов; • имя переменной должно начинаться с буквы; • в именах переменных не допускается использование пробелов и специ альных символов (использование цифр и знаков подчеркивания допус тимо); • имя переменной не должно совпадать с зарезервированными словами FoxPro. Зарезервированные слова — название команд языка, например уже знакомая нам replace и т. д. Да уж, в первом пункте (255 символов) разработчики явно расщедрились. Вероятно, это сделано специально для фанатов машинописи... Так что такое переменная памяти? MyVar
=456
где MyVar — это имя переменной. Используя знак равенства, мы присваива ем ей значение 456. В отличие от полей таблиц, нам не нужно заранее определять тип исполь зуемых переменных. Дело в том, что переменные в Visual FoxPro имеют "слабую типизацию". Это означает, что при определенных условиях одна и та же переменная может использовать данные различных типов. Например: MyVar = 456 MyVar = "Fox Pro"
&& в этом случае в переменной хранится число 456 && а теперь в этой же переменной находится && строка символов
Хорошо это или плохо? Однозначно ответить трудно. Для разработчиков Приложений в среде Visual FoxPro это, возможно, удобно — нет необходи-
82
Часть I. Процедурное программирование в Visual FoxPro
мости заранее определять типы переменных, которых может быть довольно много. Но с другой стороны, возникает проблема совместимости с другими языками высокого уровня, например в C++ необходимо заранее определить типы используемых переменных. Ты спросишь: "И что, одну и ту же переменную можно использовать во всем приложении?" Не всегда, дружок, не всегда... За это отвечает параметр, определяющий так называемую область видимости переменной и прини мающий следующие значения: Public, Private, Local. Переменная, объявленная как Public (Глобальная), "видна" в любой про грамме приложения. Под программой подразумевается любой файл, входя щий в состав проекта. Переменная с областью видимости Private (Закрытая) используется только в текущей программе (процедуре, методе). Переменная Local (Локальная) будет работать только в текущей процедуре. Объявление области видимости происходит так: Local MyVar, M y V a r l , . . . , MyVarn
т. е. перед именем переменных указываем необходимый параметр. Как задать переменной то или иное значение? Можно использовать, как показано ранее, знак равенства. Но если предполагается использовать не сколько переменных с одинаковыми значениями, то удобнее применять команду STORE. Синтаксис следующий: STORE 456 ТО MyVar,MyVarl,MyVar2
В случае символьных строк необходимо использовать кавычки: STORE "Moscow"
TO MyCity, MyTown, MyRegion, Adress
В отличие от "долгожителей" — таблиц, переменные памяти "живут" только во время работы приложения или сеанса Visual FoxPro. Именно поэтому они в основном используются для промежуточных вычислений, хотя доступ к ним осуществляется намного быстрее, чем к полям таблиц. И еще немного об именах переменных и полей таблиц. Конечно, ты мо жешь называть их как угодно, главное — соблюдать известные правила. Но в последнее время среди программистов принято негласное соглашение о присвоении имен. Все просто — перед именем переменной или поля следу ет указывать префикс из двух прописных букв, показывающих область ви димости и тип переменной. Например, переменную, объявленную как Local и хранящую числовые значения, можно назвать как lnMyVar, где i — Local, a n — Numeric. В табл. 7.1 и 7.2 показаны принятые буквы префиксов и их описание. Для чего все это делается? В первую очередь для тебя самого: приложения могут быть очень большими, содержащими огромное количество различных
Урок 7. Использование переменных
83
переменных, и не исключено, что ты сам в них запутаешься. Во-вторых, когда приложение разрабатывается группой людей, использование префик сов является более чем обоснованным. Использование префиксов не является обязательным условием, это твое личное дело, но следование этим правилам считается "хорошим тоном" про граммирования. Таблица 7.1. Область видимости (первая буква)
Буква
Описание
g
Public (Global)
i
Local
р t
Private Parameter
Таблица 7.2. Тип данных (вторая буква) Буква
Описание
а
Array (Массив)
с
Character (Символьный)
У
Currency (Денежный)
d
Date (Дата)
о
Object (Объект)
п
Numeric (Числовой)
I
L o g i c a l (Логический)
f
Float (Вещественный)
t
DateTime (Дата и время)
b
Double (Вещественный с двойной точностью)
Практическое использование переменных Сейчас рассмотрим, как применить все сказанное ранее на практике. От кроем нашу форму (Formi) в окне конструктора форм и, воспользовавшись командой системного меню File | Save As (Файл | Сохранить как), сохраним эту форму под другим именем, например FormWithVar. Вызовем окно Data Environmennt (Среда данных) и удалим из него таблицу mytab, используя
Часть I. Процедурное программирование в Visual FoxPro
84
команду Remove (Удалить) контекстного меню. Теперь у нашей формы от сутствует "официальный" источник данных. Он нам и не требуется, потому что в этом примере мы будем использовать переменные памяти, присваивая им значения объектов TextBox. По ходу реализации данной задачи мы познакомимся еще с одним инстру ментом, широко используемым при создании приложений. Речь идет о по строителе объекта (Builder). Использование построителей существенно облегчает процесс настройки свойств объектов. К сожалению, в Visual FoxPro имеются построители не для всех размещаемых в экранной форме объектов. Мы рассмотрим исполь зование большинства из них, а сейчас остановимся на применении по строителя для поля ввода. Вообще, построители можно использовать не только для создания новых объектов, но и для редактирования свойств уже существующих. Именно этим мы займемся, и в качестве примера будем "препарировать" объект T e x t l В ф о р м е FormWithVar.
Для этого выделим объект поле ввода Textl и, нажав правую кнопку мыши, выберем пункт Builder (Построитель). Откроется диалоговое окно Text Box Builder (Построитель поля ввода) (рис. 7.1) с тремя вкладками: • Format (Формат); • Style (Стиль); • Value (Значение).
Рис. 7.1. Окно построителя объекта TextBox. Вкладка Format
Вкладка Format (Формат) содержит раскрывающийся список Data Type (Тип данных), используя который мы можем установить необходимый тип
Урок 7. Использование переменных
85
данных для нашего объекта. Так как значения из нашего примера будут принимать участие в вычислениях, установим числовой тип Numeric. Флажки, расположенные на этой же вкладке, имеют следующее назначение: • Enable at run time (Доступно) — устанавливает, будет ли разрешен доступ к объекту при запуске формы. Данный флажок связан со свойством объ екта Enabled; • Alphabetic characters only (Только буквы) — при установке данного флаж ка в поле можно вводить только буквы алфавита; • Make read-only (Сделать доступным только для чтения) — при включе нии этого флажка пользователь не сможет вводить и редактировать дан ные. СВОЙСТВО Readonly; • Select on entry (Выделять при вводе) — при получении фокуса (установке курсора) содержимое этого поля будет выделяться целиком; • Hide selection (Убрать выделение — после перехода курсора на другой объект (потеря фокуса) выделение будет снято. Свойство HideSeiection; • Display leading zeros (Показывать ведущие нули) — отображает ведущие нули при выводе их в поле ввода. В нижней части находится еще один раскрывающийся список: Input Mask (Маска ввода или Шаблон). Он предназначен для задания шаблона ввода данных. Справа от списка находится надпись User-defined mask (Маска, оп ределенная пользователем). Это означает, что мы можем как выбирать зна чения, так и вводить свои, что и сделаем — введем свой шаблон, например 999.99.
Определившись с вкладкой Format, перейдем к рассмотрению следующей — Style (Стиль), используя которую можно изменять стиль отображения объ екта (рис. 7.2). Переключатель Special effect (Специальный эффект) содержит две опции: 3D (Трехмерный) и Plain (Плоский). При включенном 3D объект отобража ется с эффектом объемности. Это свойство speciaiEffeet. Переключатель Border (Обрамление) позволяет задать стиль обрамления объекта: Single (Одинарный) устанавливает стиль обрамления в виде оди нарной линии, a None (Нет) показывает объект без обрамления. Раскрывающийся список Character alignment (Выравнивание) позволяет оп ределить, каким образом будет происходить выравнивание данных в объек те. Это СВОЙСТВО Alignment. Флажок Size text box to fit "подгоняет" размер объекта под длину "содержи мого". Вкладка Value (Значение) предназначена для связывания объекта поле ввода с полем таблицы. В раскрывающемся списке Field name (Имя поля) можно
Часть I. Процедурное программирование в Visual FoxPro
86
выбрать поле, с которым мы хотим связать наш объект (в данном случае этого делать не нужно — таблицы-то нет). Кнопка с тремя точками позво ляет выбрать таблицу, используя диалоговое окно Open (Открыть).
Рис. 7.2. Диалоговое окно построителя элемента управления TextBox. Вкладка Style
Рис. 7.3. Диалоговое окно построителя элемента управления TextBox. Вкладка Value
После установки всех параметров нажимаем кнопку ОК. Расположенная рядом кнопка Cancel (Отмена) отменяет все изменения и закрывает окно построителя. Ну а про кнопку Help (Помощь) и говорить не приходится — Help он и в Африке Help! Используя построитель, установим такие же параметры для объектов Text2 И Text3.
Урок 7.
Использование переменных
87
Теперь осталось изменить программный код для события click кнопки Рас чет (листинг 7.1). Листинг 7.1. Решение уравнения с использованием переменных note объявляем переменные: LOCAL lnvara,lnvarb,lnvarc,lnd,lnxl,lnx2,lcresult * присваиваем переменным значения полей ввода invara=THISFORM.ТЕХТ1.VALUE lnvarb =THISFORM.TEXT2.VALUE lnvarc =THISFORM.TEXT3.VALUE * вычисляем дискриминант d * для этого заменяем значение переменной lnd на математическое выражение: lnd=lnvarb**2 - (4*lnvara*lnvarc) * проверяем значение d DO CASE && начало проверки CASE lnd>0 && если d больше нуля, выполняем команды: lcresult="ypaBHeHne имеет два корня" * вычисляем первый корень, присваивая значение переменной lnxl lnxl=(-lnvarb+sqrt(lnd))/(2*lnvara) * то же самое для второго корня: 1пх2=(-lnvarb-sqrt(lnd))/(2*lnvara) CASE lnd=0 && если d равен нулю, то: lcresult="ypaBHeHne имеет один корень" lnxl=lnvarb/(2*lnvara) CASE lnd0 && если d больше нуля, выполняем команды: myar(5)="уравнение имеет два корня" * вычисляем первый корень, присваивая значение переменной lnxl myar(6)=(-myar(2)+sqrt(myar(4)))/(2*myar(1)) * то же самое для второго корня: myar(7)=(-myar(2)- sqrt(myar(4)))/(2*myar(1)) CASE myar(4)=0 && если d равен нулю, то: myar(5)="уравнение имеет один корень" myar(6)=myar(2)/(2*myar(l)) CASE myar(4)2
Использование переменных в SQL-инструкциях SELECT До сих пор мы сами задавали условия для выборки тех или иных данных из таблиц. Но для того чтобы значения критериев отбора мог задавать конеч ный пользователь, необходимо использовать переменные: nMYCOST=12000 SELECT CFIRSTNAME, CSECONDNAME, NCOST FROM OLDFOXiDECLIENTS; WHERE NCOST=NMYCOST
Рассмотрев данный пример, нетрудно догадаться, каким образом можно ор ганизовать работу пользователя с запросом. Правильно, можно использо вать экранную форму, в полях ввода которой пользователь и будет задавать те или иные значения для формирования критерия отбора записей. А как будет выполняться запрос? Да запросто: сохраняем нашу инструкцию в виде файла с расширением prg и назначаем команду DO
для события click какого-нибудь элемента экранной формы. По умолчанию результат работы SQL-инструкции SELECT выводится в окно. Browse. "Пункт назначения" можно изменить, добавив в инструкцию кля чевое слово INTO:
Урок 16. Создание и использование запросов
237
nMYCOST=12000 SELECT CFIRSTNAME, CSECONDNAME, NCOST FROM OLDFOX!DECLIENTS; WHERE NCOST=NMYCOST; INTO CURSOR MYQWERY
В данном случае результат будет помещен в курсор MYQWERY. А вот и таблица с допустимыми значениями оператора INTO — табл. 16.4. Таблица 16.4. Значения оператора INTO Значение
Описание
INTO ARRAY
Результат запроса выводится в массив
INTO CURSOR
Результат запроса выводится в курсор
INTO TABLE 0 AND THISFORM.NDELTA > 0); OR (THISFORM.NB1 > 0) THISFORM.NDELTA = THISFORM.NDELTA + THISFORM.NB1 THISFORM.NDELTA = THISFORM.NDELTA - THISFORM.NB2 ENDIF
Все готово! Но мы ведь создали обычную экранную форму, а как же обе щанный класс? Превратить форму в класс проще простого — вызываем пункт Save As Class (Сохранить как класс) из системного меню File (Файл) — рис. 29.5.
Рис. 29.5. Диалоговое окно Save As Class
Урок 29. Создание экранных форм на основе пользовательских классов
395
В диалоговом окне Save As Class (Сохранить как класс) необходимо указать имя класса и библиотеку классов, которой он будет принадлежать. Чтобы убедиться, что наша форма действительно работает, разместим на ней ос новные элементы управления и попробуем ее запустить — рис. 29.6, 29.7.
Рис. 29.6. Исходное состояние формы
Рис. 29.7. После изменения размеров формы
Как видим, все прекрасно работает. Ну а как же все-таки создавать формы на основе своих классов? Для этого нужно обратиться к диалоговому окну настроек Visual FoxPro. Вызывается это окно из пункта Options (Настройки) системного меню Tools (Инструменты) — рис. 29.8.
396
Часть II. Объектно-ориентированное программирование
Рис. 29.8. Диалоговое окно Options
Теперь нужно перейти на вкладку Forms (Формы) и в группе переключате лей Template classes (Шаблоны) установить флажок Form (Форма), после чего откроется диалоговое окно Form Template (Шаблон формы) (рис. 29.8). Здесь необходимо указать нужную библиотеку классов, а в окне Class Name (Имя класса) указать имя класса. После проделанных манипуляций все новые экранные формы будут созда ваться на основе выбранного класса.
Рис. 29.9. Диалоговое окно Form Template
УРОК 30
Создание панели инструментов Класс TooiBar (Панель инструментов) представляет собой разновидность экранной формы. Обычно он включает в себя такие элементы управления, как командные кнопки, но в данный контейнер, как и в форму, можно включить все, что угодно. Создаем свою панель — рис. 30.1.
Рис. 30.1. Создание панели инструментов
398
Часть II. Объектно-ориентированное программирование
Посмотрим код? Листинг 30.1. Листинг 30.1. Создание панели инструментов DEFINE CLASS MY_NAVIGATOR AS TOOLBAR CAPTION = "" HEIGHT = 4 0 LEFT = 0 TOP = 0 WIDTH = 136 NAME = "MY_NAVIGATOR" ADD OBJECT COMMANDl AS COMMANDBUTTON WITH; TOP = 5,; LEFT - 5,; HEIGHT - 31,; WIDTH = 34,; PICTURE = "..\PROGRAM FILES\MICROSOFT VISUAL ->STUDIO\COMMON\GRAPHICS\ICONS\ARROWS\ARW06UP. ICO", ; CAPTION = "",; TOOLTIPTEXT = "ПЕРВАЯ ЗАПИСЬ",; NAME - "COMMANDl" ADD OBJECT COMMAND2 AS COMMANDBUTTON WITH; TOP = 5,; LEFT - 38,; HEIGHT = 31,; WIDTH - 32,; PICTURE = "..\PROGRAM FILES\MICROSOFT VISUAL ^STUDIO\COMMON\GRAPHICS\ICONS\ARROWS\ARW06RT.ICO",; CAPTION = "",; TOOLTIPTEXT = "СЛЕДУЮЩАЯ ЗАПИСЬ",; NAME = "COMMAND2" ADD OBJECT COMMAND4 AS COMMANDBUTTON WITH; TOP - 5,; LEFT - 69,; HEIGHT = 31,; WIDTH = 34,; PICTURE = "..\PROGRAM FILES\MICROSOFT VISUAL 4>STUDIO\C(M4ON\GRAPHICS\ICONS\ARROWS\ARW06DN. ICO", ; CAPTION = "",; TOOLTIPTEXT = "ПРЕДЫДУЩАЯ ЗАПИСЬ",; NAME = "COMMAND4"
Урок 30. Создание панели инструментов
399
ADD OBJECT COMMAND3 AS COMMANDBUTTON WITH; TOP - 5,; LEFT = 102, ; HEIGHT = 31,; WIDTH = 29, ; PICTURE = "..\PROGRAM FILES\MICROSOFT VISUAL "bSTUDIO\COMMON\GRAPHICS\ICONS\ARROWS\ARW06LT.ICO", ; CAPTION = "",; TOOLTIPTEXT = "ПОСЛЕДНЯЯ ЗАПИСЬ",; NAME - "COMMAND3" PROCEDURE COMMAND1.CLICK IF !BOF() GO TOP _SCREEN.ACTIVEFORM.REFRESH() ENDIF ENDPROC PROCEDURE COMMAND2.CLICK IF !EOF() SKIP _SCREEN.ACTIVEFORM.REFRESH() ENDIF ENDPROC PROCEDURE COMMAND4.CLICK IF !EOF() GO BOTTOM _SCREEN.ACTIVEFORM.REFRESH() ENDIF ENDPROC PROCEDURE COMMAND3.CLICK IF !BOF() SKIP -1 _SCREEN.ACTIVEFORM.REFRESH() ENDIF ENDPROC ENDDEFINE
Данную панель инструментов можно включить в экранную форму — рис. 30.2. Естественно, в панели инструментов можно использовать как элементы управления, созданные на основе базовых классов Visual FoxPro, так и соз данные на основе пользовательских классов.
400
Часть II. Обьектно-ориентированное программирование
Рис. 30.2. Использование панели инструментов для просмотра записей
УРОК 3 1
Управление классами На этом уроке мы познакомимся с инструментом, который позволяет на много упростить работу с классами.
Class Browser В Visual FoxPro имеется удобное средство, с помощью которого можно ра ботать с классами: создавать новые, редактировать существующие, а также просматривать библиотеки классов. Называется оно Class Browser (Браузер классов). Открыть его можно двумя способами: в системном меню Tools (Инструменты) выбрать команду Class Browser (Браузер классов) или на брать в командном окне: DO (BROWSER) . Каким бы способом мы его не вы зывали, результат будет один — рис. 31.1.
Рис. 31.1. Окно Class Browser
402
Часть II. Объектно-ориентированное программирование
Данное окно содержит панель инструментов с кнопками, назначение кото рых описано в табл. 31.1. Таблица 31.1. Кнопки панели окна Class Browser
При щелчке правой кнопкой мыши на окне Class Browser (Браузер классов) открывается контекстное меню — рис. 31.2. Описание команд контекстного меню приведено в табл. 31.2.
Урок 31. Управление классами
403
Рис. 31.2. Контекстное меню Таблица 31.2. Команды контекстного меню Class Browser Команда
Описание
Descriptions (Описание)
Включает или выключает панели описания биб лиотеки и класса в нижней части окна Class Browser
Always on Top (Всегда на переднем плане)
Если стоит отметка, то окно Class Browser на ходится всегда на переднем плане
Auto Expand (Автоматическое расширение)
Если стоит отметка, список автоматически раз ворачивается
Parent Class Toolbar (Просмотр родительского класса)
Если стоит отметка, в системное меню доба вится кнопка для редактирования методов ро дительских классов
Restore Defaults (Восстановить настройки)
Восстанавливает настройки Class Browser
Hierarchical (Иерархия)
Если стоит отметка, то список классов отобра жается в виде иерархического дерева
Protected (Защищенные)
Если стоит отметка, то будут отображаться и защищенные члены класса
Hidden (Скрытые)
Если стоит отметка, то будут отображаться и скрытые члены класса
Empty (Пустые)
Если стоит отметка, то будут отображаться и пустые члены класса
404
Часть II. Объектно-ориентированное программирование Таблица 31.2 (окончание)
Команда
Описание
Modify (Изменение)
Происходит изменение (модификация) выбран ного класса
Rename (Переименовать)
. Переименование выбранного объекта
Redefine (Переопределить)
Изменение родительского класса для выбран ного класса
Remove (Удалить)
Удаляет указанный класс из библиотеки клас сов
View (Просмотр)
Просмотр текущего значения для выбранного свойства
Container Icon (Иконка)
Пиктограмма для выбранного класса
Select Parent Class (Выбор)
Выбор базового класса для указанного объекта
New Window (Новое окно)
Новое окно Class Browser
New Component Gallery (Новая галерея компонентов)
Новое окно галереи компонентов
Refresh (Обновить)
Обновление окна
Help (Справка)
Справка о Class Browser
При создании приложений очень удобно использовать окно просмотра кода класса — достаточно скопировать текст и затем можно его использовать в качестве программ или подпрограмм.
Информация о классе и пиктограмма класса Для просмотра информации о классе используется диалоговое окно Class Info (Информация о классе) (рис. 31.3). Оно вызывается с помощью одно именной команды из меню Class. Данное окно содержит две вкладки: Class (Класс) и Members (Члены). На вкладке Class (Класс) мы можем указать значок (пиктограмму) для каждого класса. Вернее, значка там можно указать два: один в поле ввода Toolbar icon (Значок на панели инструментов) — данный значок будет отображаться на панели инструментов Form Controls, а другой — в поле Container icon (Значок контейнера) — он будет отображаться в окне Class Browser. He знаю, как насчет второго, а вот первый рекомендую указывать — ты ведь уже заметил, что все однотипные объекты твоей библиотеки отображаются на панели инструментов одинаковыми значками и определить, "кто есть
Урок 31.
Управление классами
405
кто" можно только по всплывающей подсказке. Представь себе 187 одина ковых значков и ты поймёшь, о чем это я... Перейдем к рассмотрению вкладки Members (Члены) — рис. 31.4.
Рис. 31.3. Диалоговое окно Class Info, вкладка Class
Рис. 31.4. Диалоговое окно CJass Info, вкладка Members
406
Часть II. Объектно-ориентированное программирование
На данной вкладке отображен список объектов класса, а также перечень методов и свойств. Столбец Name (Имя) содержит имя класса, столбец Visibility (Видимость) может принимать три значения: Public (Глобальный), Protected (Защищенный) и Hidden (Скрытый). В столбце No Init можно за претить выполнение метода init при создании объекта. По нажатию кноп ки Modify (Модификация) открывается диалоговое окно Edit Property/Method (Редактирование свойств и методов) (рис. 31.5), в котором можно как изме нить значения выбранных свойств, так и добавить новое свойство или ме тод (кнопки New Property и New Method). Используя кнопку Remove (Уда лить), можно удалить указанный компонент.
Рис. 31.5. Диалоговое окно Edit Property/Method
В столбце Name (Имя) отображается наименование объекта, свойства ил метода, в столбце Туре (Тип) — тип объекта (О — объект, М — метод, Р свойство). Столбцы Access и Assign указывают, были ли созданы соответст- вующие методы. Столбец Visibility определяет тип свойства или метода.
УРОК 32
Фундаментальные классы Visual FoxPro Конечно, хорошо самому писать различные классы — есть чем и народ уди вить, и себя показать... Но! Зачем "изобретать велосипед"? Ведь наивно бы ло бы думать, что, допустим, класс командной кнопки, которая осуществля ет единственное действие — закрытие экранной формы — придумали вчера. Нет, конечно. Все эти базовые или фундаментальные классы изобретены давным-давно. Нам же остается их где-то взять и уметь применять в своих приложениях. А где их взять? Подсказываю три возможных варианта. • Купить. • Украсть (карается законом!). • Использовать библиотеки фундаментальных классов, входящих в ком плект поставки Visual FoxPro. Вот третий вариант и обсудим. В Visual FoxPro есть набор библиотек клас сов, которые могут быть использованы в наших приложениях для решения большинства основных задач. Хранится все это "добро" в обычных файлах с расширением vex, а каталог, где все это "лежит", так и называется Foundation Classes (Фундаментальные классы). Какие же такие "хитрые" классы и библиотеки приготовили для нас отцы-основатели нашего Лиса? Ответ на этот вопрос — в табл. 32.1. Таблица 32.1. Фундаментальные классы из комплекта Visual FoxPro Название класса
Название библиотеки
Описание класса
About Dialog
_dialogs.vcx
Включает в приложение стандартное диалоговое окно About
ActiveX Calendar
_datetime.vcx
Позволяет включить в форму календарь
Application Registry
Registry.vcx
Операции, связанные с реестром Win dows
408
Часть //. Объектно-ориентированное программирование Таблица 32.1 (продолжение)
Название класса
Название библиотеки
Array Handler
jjtility.vcx
Операции с массивами, недоступные при использовании стандартных средств
Cancel Button
_miscbtns.vcx
Кнопка Cancel (Отмена), закрывающая экранную форму
Clock
_datetime.vcx
Выводит в экранную форму текущее время
C o n f l i c t Catcher
_dataqwery.vcx
Диалоговое окно, в котором показаны конфликтные значения при редактиро вании данных
Cookies Class
Jntenet.vcx
Используется в качестве FoxISAPI
Cross Tab
_utility.vcx
Используется для создания перекрест ных таблиц
Data E d i t Button
Wizbtns.vcx
Панель навигации по записям таблицы. Кнопки Top, Previous, Next, Bottom, Find, Print, Add, Delete, Edit, Save (Пер вая, Предыдущая, Следующая, Послед няя, Найти, Печать, Добавить, Удалить, Редактировать, Сохранить)
Data Navigation Buttons
_datanav.vcx
Группа кнопок (Top, Previous, Next, Bottom) (Первая, Предыдущая, Сле дующая, Последняя)
Data Session Manager
_app.vcx
Обслуживает обновление данных в эк ранных формах при работе с данными
Data V a l i d a t i o n
_datanav.vcx
Отслеживает конфликты между данными
Data Navigation Object
Jable.vcx
Данный класс обязательно используется в сочетании с элементами управления для перемещения (навигации) по запи сям таблиц
_dbf3html
Jnternet.vcx
Курсор для HTML
D i s t i n c t Values Combo
_dataqwery.vcx
Заполняет поле со списком (ComboBox) уникальными значениями
Error Object
_app.vcx
Стандартный обработчик ошибок
F i e l d Mover
_app.vcx
Диалоговое окно, с помощью которого можно переносить поля из одного спи ска в другой. (Мы видели такую штуку при использовании построителя для Grid)
F i l e Version
_utility.vcx
Считывает ресурс версии файла
Описание класса
Урок
32.
Фундаментальные
классы
Visual
FoxPro
409
Таблица 32.1 (продолжение) Название класса
Название библиотеки
Описание класса
F i l t e r Dialog Box Button
Jable.vcx
Кнопка, которая используется в диало говом окне Filter (Фильтр)
F i l t e r Dialog Box
Jable.vcx
Диалоговое окно Filter (Фильтр)
Find Button
Jable.vcx
Кнопка, используемая окне поиска записи
Find Dialog Box
Jable.vcx
Диалоговое окно, с помощью которого можно отыскать указанный текст
Find Object
Jable.vcx
Данный объект отыскивает указанную запись по заданному условию
Find (Find Next) Buttons
_utility.vcx
Кнопки Find (Найти) и Find Next (Найти следующую)
Font Combobox
Jormat.vcx
Раскрывающийся список с перечнем доступных шрифтов
Font Size Combobox
Jormat.vcx
Раскрывающийся список с перечнем доступных размеров шрифтов
Format Toolbar
Jormat.vcx
в диалоговом
Панель инструментов для форматирова ния текста
FRX-HTML
Jnternet.vcx
Преобразует отчет VFP (с расширением frx) в формат HTML
G e t f i l e and Directory
_controls.vcx
Диалоговое окно для выбора папок и файлов
Goto Dialog Box Button
Jable2.vcx
Кнопка, применяемая в диалоговом окне Goto
Goto Dialog Box
Jable.vcx
Диалоговое окно для перемещения по записям
Graph by Record
_utility.vcx
Используется для построения графиков
Graph Object
_autgraph.vcx
Используется с Graph Wizard (Мастер диаграмм (графиков))
Help Button
jniscbth.vcx
Кнопка, отображающая раздел справки, заданный свойством HelpContextld
Hyperlink Button
Jiyperlink.vcx
Кнопка, запускающая Web-браузер
Hyperlink Image
Jiyperlink.vcx
Изображение, браузер
Hyperlink Label
Jiyperlink.vcx
Надпись, запускающая Web-браузер
запускающее
Web-
410
Часть II. Обьектно-ориентированное программирование Таблица 32.1 (продолжение)
Название класса
Название библиотеки
Описание класса
Item Locator
_dialogs.vcx
Диалоговое окно для поиска файла
I N I Access
Registry.vcx
Осуществляет доступ к системному рее стру Windows для получения информа ции из INI-файла
Keywords Dialog Box
_dialogs.vcx
Диалоговое окно со списком ключевых слов
Launch Button
jnsicbtn.vcx
Кнопка для запуска приложения. Ис пользуется командой RUN
Locate Button
Jable2.vcx
Кнопка для вызова диалогового окна, выполняющего функции, аналогичные команде Locate
Lookup Combobox
_dataquery.vcx
ComboBox, список значений которого заполняется данными из полей
M a i l Merge Object
Mailmerge.vcx
Класс, который использует Mail Merge Wizard (Мастер слияния данных) для формирования документа Word
Messagebox Handler
_dialogs.vcx
Оболочка функции MESSAGEBOX ()
Mover
_movers.vcx
Элемент управления списком для орга низации перемещения данных
MouseOver E f f e c t s
_ui.vcx
Обеспечивает выполнение функций вы деления элемента управления при пе ремещении над ним указателя мыши
Navigator Shortcut Menu
_table2.vcx
Контекстное меню, содержащее коман ды навигации
Navigation Toolbar
_table2.vcx
Панель инструментов для перемещения по записям таблицы
Object State
_app.vcx
Элемент управления, состояние объекта
ODBC R e g i s t r y
Registry.vcx
Извлекает связанную с ODBC информа цию из системного реестра Windows
O f f l i n e Switch
_dataquery.vcx
Набор кнопок, позволяющий переклю чаться между Online- и Offline-данными при работе с удаленными представле ниями
OK Button
_miscbtn,vcx
Кнопка, которая закрывает экранную форму и фиксирует все изменения дан ных
определяющий
Урок 32. Фундаментальные классы Visual FoxPro
411 Таблица 32.1 (продолжение)
Название класса
Название библиотеки
Output Object
_reports.vcx
Этот класс организует взаимодействие с источником данных для отчетов
Output Controls
_reports.vcx
Формирует запросы для ввода опций при выводе отчета
Output Dialog Box
_reports.vcx
Диалоговое окно для ввода опций при выводе отчета
Password Dialog Box
_dialogs.vcx
Диалоговое окно для ввода пароля
Pivot Table
_pivtable.vcx
Используется в Pivot Table Wizard для формирования таблицы Excel
Preview Report
_miscbtn.vcx
Набор кнопок, используемый при пред варительном просмотре отчета
QBF
_dataquery.vcx
Набор кнопок для выполнения запроса
R e g i s t r y Access
Registry, vex
Используется для получения информа ции из системного реестра Windows
Resize Object
_controls.vcx
Данный класс организует изменение размеров объекта при изменении раз меров экранной формы
RTF Controls
_format.vcx
Используется для форматирования тек ста в формате RTF
Run Form Button
_miscbtn.vcx
Кнопка для запуска экранной формы
SCX-HTML
_innternet.vcx
Преобразует файл формата FRX в файл формата HTML
Sendmail Button
_miscbtn.vcx
Используется для отправки почтового сообщения из экранной формы
S h e l l Execute
_environ.vcx
Кнопка для запуска некоторого прило жения из текущего приложения
Shortcut Menu Class
_menu.vcx
Используется при создании контекстных меню
Simple E d i t Buttons
Wizbtns.vcx
Набор кнопок Add, Delete, Edit, Dublicate, Save, Cancel (Добавить, Уда лить, Редактировать, Копировать, Со хранить, Отмена) для редактирования таблиц и видов
Simple Picture Navigation Buttons
_table.vcx
Пиктографические кнопки Next (Сле дующая) и Previous (Предыдущая) для перемещения по записям таблицы или представления данных
Описание класса
412
Часть II. Объектно-ориентированное программирование Таблица 32.1 (продолжение)
Название класса
Название библиотеки
Simple Navigation Buttons
.table, vex-
Обычные кнопки Next (Следующая) и Previous (Предыдущая) для перемеще ния по записям таблицы или представ ления данных
Sort Dialog Box Buttons
Jable2.vcx
Данная кнопка используется в диалого вом окне сортировки
Sort Object
Jable2.vcx
Используется для сортировки данных
Sort Selector
_table2.vcx
Набор кнопок для сортировки данных по возрастанию или убыванию
Sort Mover
_movers.vcx
Используется для автоматической сор тировки данных
Sound Player
jnutimedia.vcx
Используется для загрузки и проигрыва ния звуковых файлов
Splash Screen
_dialogs.vcx
Используется для создания заставки для приложений
SQL Pass Through
_dataquery.vcx
Используется для выполнения операций SQL Path Through
Stop Watch
_datetime.vcx
Секундомер
String Library
_utility.vcx
Удаляет символы возврата каретки и перевода строки из данных строкового типа
Super Mover
_movers.vcx
Элемент управления списком. Имеет кнопки Move, Remove, MoveAII, RemoveAII (Переместить, Удалить, Пере местить все, Удалить все) для переме щения данных
System Toolbar
_app.vcx
Используется в приложениях для установки или удаления системной панели управления
Table Mover
_movers.vcx
Список, который автоматически загру жает таблицы и поля из текущего источ ника данных
Text Preview
Описание класса
Текстовый окон
редактор
для
диалоговых
Thermometer
_controls.vcx
Элемент управления в виде термометра
Trace Aware Timer
_app.vcx
Управляет окном трассировки
Урок 32. Фундаментальные классы Visual FoxPro
413 Таблица 32.1 (окончание)
Название класса
Название библиотеки
Type
_utility.vcx
Извлекает информацию о типе из биб лиотеки типов и формирует текстовый файл
URL Combo
_intemet.vcx
Поле со списком для ввода адреса ин тернет-страницы
URL O p e r a t i o n D i a l o g Box
_internet.vcx
Диалоговое окно для хранения адресов ресурсов Интернет
VCR B u t t o n s
_table.vcx
Группа кнопок для перемещения по записям
VCR P i c t u r e s Navigation Buttons
_table.vcx
Группа пиктографических кнопок для перемещения по записям
Video
_multimedia.vcx
Загрузка и проигрывание видеофайлов
Web Browser C o n t r o l
_webview.vcx
Позволяет включать в экранную форму браузер Internet Explorer
Window
_ui.vcx
Используется для управления окнами
Library
Player
Handler
Описание класса
Просмотрев эту таблицу, ты наверняка с недоумением пожмешь плечами и скажешь: "Ну и что? А я то здесь причем?" А притом, что все эти уже гото вые классы ты можешь использовать при разработке своих приложений. Другой вопрос, как и с помощью чего это сделать? Именно для этого случая разработчики приготовили для нас еще один сюрприз, о котором мы пого ворим на следующем уроке.
УРОК зз
Галерея компонентов (Component Gallery) С помощью галереи компонентов можно группировать такие компоненты, как проекты, классы, формы, отчеты и т. д. Также она предоставляет сред ства для создания новых проектов, форм и т. д. А еще, как я уже говорил, с помощью этой хитрой штуки можно включать в свои приложения фунда ментальные (и не только) классы. Для запуска придется выполнить одно из следующих действий: выбрать команду Component Gallery (Галерея компонентов) из меню Tools (Инструменты) или набрать команду DO (GALLERY) В командном окне. В любом случае галерея появится на экране — рис. 33.1.
Рис. 33.1. Диалоговое окно Component Gallery
Урок 33. Галерея компонентов (Component Gallery)
415
Как видишь, диалоговое окно разбито на две части. Левая, в которой нахо дятся каталоги, называется панель каталогов, а правая, на которой располо жены объекты, — панель объектов. По умолчанию каталоги в галерее компонентов организованы следующим образом — табл. 33.1. Таблица 33.1. Каталоги в галерее компонентов Каталог
Описание
Catalogs
Корневой каталог
VFP Main
Содержит компоненты, используемые другими каталогами
Favorites
В этот каталог мы можем поместить те компонен ты, которые чаще всего используем при работе
Visual FoxPro
Содержит все базовые классы Visual FoxPro, шаб лоны приложений, форм, отчетов и т. д., а также инструменты для разработки приложений
Data
Содержит средства для работы с данными
Foundation Classes
Библиотеки фундаментальных классов
Help
Файлы с разделами справки
Templates
Шаблоны различных мастеров (Wizard)
Tools
Содержит инструменты для разработки приложе ний
My Base Classes
Подклассы основных классов Visual FoxPro
ActiveX
Содержит перечень всех зарегистрированных на компьютере элементов управления ActiveX
World Wide Web
Список адресов Web-страниц, посвященных Visual FoxPro
Multimedia
Файлы мультимедиа (звуковые, видео, изображе ния), которые можно включать в приложения
Samples
Программы учебных приложений
416
Часть II. Объектно-ориентированное программирование
Панель инструментов Component Gallery Панель инструментов содержит следующие к н о п к и — табл. 33.2. Таблица 33.2. Кнопки панели инструментов
Рис. 33.2. Диалоговое окно Open
Урок 33. Галерея компонентов (Component Gallery)
417
Рис. 33.3. Диалоговое окно Component Gallery Options, вкладка Standard
Вкладка Standard (Стандартные) позволяет настроить общие параметры ок на галереи компонентов (рис. 33.3). Опции вкладки Standard (Стандартные) перечислены в табл. 33.3. Таблица 33.3. Опции вкладки Standard Опция
Описание
Группа Global defaults (Общие установки) Enable item renaming (Разрешить переименовывать объект)
Если установлен данный флажок, раз решается переименовывать каталоги и объекты
FFC Builder Lock (Запуск построителя)
При установке данного флажка при перетаскивании объекта на экранную форму будет автоматически запущен соответствующий построитель
Drag and drop to desktop (Перенести и оставить на рабочем столе)
При установке данного флажка объект можно перетащить на рабочий стол. (Правда, работать он там не будет)
Advanced editing enabled (Возможность дополнительного редактирования)
При установке этого флажка в окно свойств объекта будут добавлены до полнительные вкладки (Type, Scripts, Views, Comments) (Тип, Скрипты, Представления, Комментарии)
Часть II. Объектно-ориентированное программирование
418
Таблица 33.3 (окончание) Опция
Описание
Группа Catalog default behavior (Действия каталога по умолчанию) Open file as new view (Открыть файл)
Если установлен этот переключатель, то объект, который может быть либо открыт, либо добавлен при двойном щелчке мыши, будет именно открыт
Add file to current view (Добавить файл)
Если установлен этот переключатель, то объект, который может быть либо открыт, либо добавлен при двойном щелчке мыши, будет именно добавлен
Группа Item default behavior (Действия объекта по умолчанию) Modify item file (Модифицировать файл)
При установке этого переключателя объект будет модифицирован при двойном щелчке
Run item file (Запуск файла)
При установке этого переключателя объект будет запущен на выполнение при двойном щелчке
Рис. 33.4. Диалоговое окно Component Gallery Options, вкладка Catalogs
На вкладке Catalogs (Каталоги) расположен список входящих в состав гале реи компонентов каталогов (рис. 33.4). При желании можно добавить но вый каталог, воспользовавшись кнопкой New (Новый).
Урок 33. Галерея компонентов (Component Gallery)
419
Рис. 33.5. Раскрывающийся список View Type
На панели инструментов галереи компонентов имеется раскрывающийся список View Type (Тип представления) — рис. 33.5 Здесь имеется список значений, управляющих видом отображения данных в окне галереи компонентов. Изменить (см. рис. 33.7), удалить или добавить дополнительные значения можно с помощью вкладки Dynamic Views (Ди намические представления) — рис. 33.6.
Рис. 33.6. Диалоговое окно Component Gallery Options, вкладка Dynamic Views
420
Часть II. Объектно-ориентированное программирование
Рис. 33.7. Диалоговое окно Edit View
Работа с галереей компонентов Сейчас попробуем на практике применить все ранее описанное. В конст рукторе форм создадим обычную форму. Затем, не закрывая окна конструк тора форм, вызовем окно галереи компонентов, в котором откроем каталог Foundation Classes (Фундаментальные классы), а в нем — каталог Buttons (Кнопки). В правом окне галереи компонентов выберем объект OK Button и перетащим его мышью в нашу форму. Теперь откроем подкаталог DateTime (Дата/Время), в правом окне выберем объект Clock (Часы) и нажмем пра вую кнопку мыши. В появившемся контекстном меню выберем команду Add to form (Добавить в форму). Запустим форму на выполнение — рис. 33.8.
Рис. 33.8. Использование компонента из галереи
Видишь, за десять секунд мы сделали форму, которая отображает текущие дату и время, да еще и закрывается при щелчке по кнопке. Удобно, правда? Еще мы узнали, что добавлять объекты можно как используя контекстное меню, так и просто перетаскивая их — галерея компонентов полностью поддерживает метод Drag and Drop (Перенести и оставить). Более того, на основе фундаментальных классов с помощью галереи компо нентов можно создавать новые компоненты для своих приложений. Пом нишь, при изучении таймера мы делали форму-заставку? Так вот, в галерее компонентов уже есть готовый класс экрана-заставки.
Урок 33. Галерея компонентов (Component Gallery)
421
1. Открой подкаталог Dialogs (Диалоги или диалоговые окна) и щелкни правой мышью по объекту Splash Screen. В контекстном меню выбери команду Create Form (Создать форму). 2. После этого откроется диалоговое окно, в котором нужно указать имя новой формы, а затем автоматически запустится конструктор форм с уже готовым шаблоном — рис. 33.9.
Рис. 33.9. Создание новой формы
Использование галереи компонентов для создания приложения С помощью галереи компонентов можно создавать не только компоненты приложений, но и сами приложения. 1. В окне галереи компонентов открой корневой каталог (Catalogs) и дваж ды щелкни по объекту New Application (Новое приложение). 2. Откроется диалоговое окно Enter Project Name (Введите имя проекта) (рис. 33.10). Всего то и остается, что указать имя проекта, и через не сколько секунд запустится построитель проекта (Application Builder).
422
Часть II.
Объектно-ориентированное программирование
Рис. 33.10. Диалоговое окно Enter Project Name
Но это еще не все! Галерея компонентов содержит несколько готовых при ложений, на базе которых можно построить свое собственное. Хранятся они в папке Applications (Приложения) каталога Templates (Шаблоны) (рис. 33.11).
Рис. 33.11. Шаблоны приложений
Заключение Ну вот, подходит к концу наша книга, пора подводить итоги. Пройдя все уроки, ты научился (а мне хотелось бы верить, что это так) создавать сво бодные таблицы и таблицы базы данных, экранные формы, отчеты, слож ные (и не очень) запросы и представления данных, перекрестные таблицы, графики и т. д. В общем, можно сказать, что ты полностью усвоил основ ные навыки работы с Visual FoxPro. Почему основные? Да потому, что эта книга лишь приоткрыла для тебя дверь в мир СУБД, и я думаю, что это бы ла интересная экскурсия... О Visual FoxPro написано немало книг, справочников, учебных пособий, и если ты решишь серьезно заняться программированием, тебе не составит труда найти их. А я напоследок "подарю" тебе список ресурсов Интернет, посвященных FoxPro. • Официальные: http://www.microsoft.com/rus/ — Microsoft в России. http://msdn.microsoft.com/vfoxpro/default.asp — Microsoft Visual FoxPro. • Пресса: www.newsletter.narod.ru/foxtaIk/FoxTalk.htm — "FoxTalk". • Коллективные: www.firststeps.ru — "Первые шаги" — Клементьев В. А., Сергей Платонов, Каев Артем. www.infocity.kiev.ua — "Виртуальный город компьютерной документа ции" — Пинкус Михаил. www.universalthread.com — Michel Fournier, Nick Neklioudov, Evan Delay, Gerald Santerre, Claudio Lassala, MartHn SalHas. • Частные: www.dbrad32.narod.ru — Баянов Дмитрий Александрович. www.wet.narod.ru — Ветчинов Владимир.
424
Заключение
www.Foxpopuli.narod.ru — Горяинов Евгений. www.clickexpIorer.narod.ru — Грицюк Сергей. www.vfpdev.narod.ru — Дроздов Михаил. www.nsvisual.com/fox2 — Жирнов Сергей. www.foxuser.by (nm) (boom).ru — Закиров Орион. www.skc.narod.ru — Коваль Александр. www.urfin.boom.ru — Радченко Виктор Вадимович. www.foxtools.newmail.ru — Сидоров Леонид. www.dushes.hotbox.ru — Смирнов Андрей Валерьевич. www.sumarokov.nm.ru — Сумароков Сергей. www.vfp.narod.ru — Тананаев Дмитрий Александрович. • Форумы: http://talk.mail.ru/forum/fido7.ru.foxpro — Эха по FPD. http://talk.mail.ru/forum/fido7.ru.visual.foxpro — Эха по VFP. http://ljuda_m.chat.ru/foxolb_07_02.rar — Обзор русскоязычных ресурсов FoxPro — Alex Kise. А теперь хочется сказать слова благодарности всем, кто помогал мне при создании этой книги. Огромное СПАСИБО: • моей супруге Елене — за понимание и поддержку в этом нелегком начи нании; • семье Ушаковых, Владимиру и Татьяне — за оказанную техническую по мощь; • Жанне Манойленко — за полуночное редактирование. И, конечно же, огромное спасибо тебе, уважаемый читатель — ведь это не я, это МЫ вместе с тобой написали эту книгу. Успехов тебе и СЧАСТЛИВОГО ПРОГРАММИРОВАНИЯ! Дмитрий Шапорев
[email protected] ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ 1
Настройка параметров конфигурации Visual FoxPro Для настройки параметров, определяющих работу Visual FoxPro, необходимо вызвать диалоговое окно Options (Параметры) посредством команды Options (Параметры/Опции) системного меню Tools (Инструменты) (рис. П1.1).
Рис. П1.1. Вызов окна Options
После выполнения этой команды окно настроек не заставит себя ждать рис. П1.2.
Приложение
428
1
Рис. П1.2. Диалоговое окно Options
Все параметры разделены на соответствующие группы, расположенные на двенадцати вкладках, описание которых приведено в табл. П1.1. Таблица П1.1. Вкладки окна Options Вкладка
Описание
Controls (Элементы управления)
Настройка визуальных классов и объектов OLE
Data (Данные)
Настройка параметров для управления данными
Debug (Отладка)
Настройка параметров трассировки и отладки программ
Field Mapping (Поля)
Определяет тип объекта, который будет создан в форме при переносе на нее полей таблиц из окна Data Environment (Среда окружения), Database Designer (Конструктор базы данных) или проекта
File Locations (Расположение файлов)
Отображает расположение файлов и каталогов
Forms (Формы)
Настройка конструктора экранных форм
General (Основные параметры)
Настройки звука и ввода данных
Projects (Проекты)
Настройка окна проекта
Настройка параметров конфигурации Visual FoxPro
429 Таблица П1.1 (окончание)
Вкладка
Описание
Regional (Региональные параметры)
Настройка формата отображения дат, чисел, денежных единиц и времени
Remote Data (Удаленные данные)
Настройка удаленного доступа к данным
Syntax Coloring (Цвет синтаксиса)
Настройка цвета шрифта
View (Вид)
Настройка отображения на экране строки со стояния, системного времени, системных со общений
Начнем по порядку описание каждой вкладки. С помощью вкладки Controls (Элементы управления) (рис. П1.3) можно до бавлять как библиотеки классов, так и элементы управления ActiveX (мы уже делали это). Для добавления элемента или библиотеки служит кнопка Add (Добавить), для удаления — Remove (Удалить).
Рис. П1.3. Диалоговое окно Options, вкладка Controls
Вкладка Data (Данные) (рис. Ш.4) позволяет настроить определенные па раметры, описание которых приведено в табл. П1.2.
Приложение
430
Рис. П1.4. Диалоговое окно Options, вкладка Data
Таблица П1.2. Параметры вкладки Data Параметр
Описание
Open exclusive (Открывать монопольно)
Это и есть тот самый эксклюзивный доступ, о котором мы говорили ранее. При выборе этой опции таблица будет открыта в монопольном режиме, и никто другой не сможет открыть эту таблицу (имеется в виду работа нескольких пользователей в сети)
Show field names (Отображать имена полей)
При выполнении таких команд,
как
SUM,
DISPLAY, AVERAGE, L I S T , НЭД с т о л б ц а м и б у д у т
отображаться названия соответствующих полей. Эта опция соответствует команде SET HEADING Prompt for code page (Предлагать выбор кодовой страницы)
Определяет, предлагать ли пользователю вы брать кодовую страницу. Например, при попыт ке просмотра таблицы FoxPro for DOS будет предъявлено диалоговое окно Code Page. Со ответствует команде SET CPDIALOG
Ignore deleted records (Игнорировать удаленные записи)
Определяет, каким образом будут обрабаты ваться "удаленные" записи. Дело в том, что команда DELETE не удаляет записи физически, а лишь помечает их определенным образом. Если этот флажок не установлен, то такие записи будут обрабатываться как и все осталь ные. Соответствует команде SET DELETED
1
Настройка параметров конфигурации Visual FoxPro
431 Таблица П1.2 (продолжение)
Параметр
Описание
Rushmore optimization (Оптимизация Rushmore)
Определяет, включен ли метод ускоренного поиска информации, называемый Rushmore. Рекомендуется отключать лишь в особых слу чаях. Соответствует команде SET O P T I M I Z E
Unique records in indexes (Уникальные записи в индексах)
Соответствует команде SET UNIQUE. При уста новке данного флажка индексы будут поддер живать только неповторяющиеся значения ключей, несмотря даже на то, что могут быть записи и с одинаковыми значениями
Collation sequence (Порядок сортировки)
С помощью раскрывающегося списка можно выбрать желаемый порядок сортировки симво лов. Соответствует команде SET COLLATE
Record counter interval (Интервал отсчета записей)
Определяет частоту выдачи сообщений в стро ку состояния о количестве обработанных запи сей при выполнении таких команд, как PACK И RE INDEX. Соответствует команде SET ODOMETR.
Значения могут быть в интервале от 1 до 32 787, но при установке слишком малого ко личества записей может замедлить работу приложения, т. к. потребует более частого об новления экрана Memo block size (Размер мемо-блоков)
Соответствует команде SET BLOCKS IZE и опре деляет длину Memo-блока в байтах
Browse refresh interval (Интервал обновления при просмотре)
Определяет, через какой интервал времени (в секундах) данные в окне Browse будут об новлены в соответствии с физическими данны ми в таблице. Команда SET REFRESH
Table refresh interval (Интервал обновления таблицы)
Определяет, через какой интервал времени (в секундах) данные в любом окне (не только Browse) будут обновлены в соответствии с фи зическими данными в таблице
SET NEAR on (Установить вблизи)
Влияет на действия Лиса при неудачном поис ке записи. Если флажок снят, то при неудач ном поиске указатель остановится в конце файла. При установленном же флажке указа тель остановится на следующей по алфавиту записи относительно той позиции, в которой ожидалось найти искомое значение. Соответ ствует команде SET NEAR
SET EXACT on (Установить точно)
Управляет поиском символьных строк. При установленном флажке искомое значение должно точно совпадать с критерием поиска, т. е. как по длине строки, так и посимвольно. Соответствует команде SET EXACT
Приложение 1
432
Таблица П1.2 (окончание) Параметр
Описание
SET ANSI on (Установить ANSI)
При сравнении двух строк разной длины более короткая дополняется пробелами, чтобы длины сравниваемых строк стали одинаковыми. Если флажок не установлен, строки сравниваются посимвольно до длины более короткой. Коман да SET ANSI
Опции для работы в сети (многопользовательский режим) Automatic file locking (Автоматическая блокировка файлов)
Соответствует команде SET LOCK и устанавли вает режим автоматической блокировки фай лов при совместном доступе
Multiple record locks (Блокировка нескольких записей)
Соответствует команде SET MULTILOCKS и ис пользуется для блокировки и совместной обра ботки сразу нескольких записей
С помощью параметров вкладки Debug (Отладка) (рис. П1.5) настраивается работа отладчика (табл. П1.3).
Рис. П1.5. Диалоговое окно Options, вкладка Debug
Настройка параметров конфигурации Visual FoxPro
433
Таблица П1.3. Параметры вкладки Debug Параметр
Описание
Environment (Среда)
Определяет среду для отладчика. При выборе Debug Frame (Оболочка отладчика) все окна отладчика располагаются внутри окна Visual FoxPro Debugger (Отладчик Visual FoxPro). При выборе FoxPro Frame отдельные окна от ладчика можно отображать в главном окне Visual FoxPro
Display Timer Events (Отображать события таймера)
При отмеченном флажке в процессе отладки будут отображены события таймера
Specify Window (Определить для окна)
Здесь перечислены окна отладчика, для которых можно задать такие параметры, как размер и цвет шрифта и т. д. Все эти параметры перечис лены в нижней части вкладки
Рис. П1.6. Диалоговое окно Options, вкладка Field Mapping
С помощи вкладки Field Mapping (Поля) (рис. П1.6) можно назначить дей ствующие по умолчанию элементы управления в зависимости от типа поля. Для чего это нужно? А вот смотри: раньше тип объекта, связанный с типом поля, был строго фиксирован и представлял собой в большинстве случаев
434
Приложение 1
текстовое поле. Но, допустим, для поля типа Logical удобнее использовать такой элемент управления, как флажок. Теперь мы легко это можем опре делить. Замечу, что началось такое "удобство" с пятой версии Visual FoxPro. Опишем параметры базы данных (Database options) — табл. П1.4. Таблица П1.4. Группа Database options Параметр
Описание
Drag and drop field caption ("Перетащить и оставить" заголовки полей)
При установке этого флажка заголовок поля будет сформирован на основе свойства Caption структуры таблицы и включен при добавлении поля на экранную форму
Copy field comment (Копировать комментарии полей)
Копируется комментарий к данному полю
Copy field input mask (Копировать маску ввода)
Копируется маска ввода для данного поля
Copy field format (Копировать формат поля)
Копируется формат данного поля
Для изменения элемента управления, связанного с каким-либо типом поля, необходимо нажать кнопку Modify (Модификация) и указать в диалоговом окне Modify Field Mapping (Модификация полей) объект базового или поль зовательского класса (рис. П1.7).
Рис. П1.7. Диалоговое окно Modify Field Mapping
Во время своей работы наш трудяга Лис использует огромное количество различных файлов. А как управляться со всем этим хозяйством, где что ис кать? А вот на вкладке File Locations (Размещение файлов) (рис. П1.8) име-
Настройка параметров конфигурации Visual FoxPro
435
ется таблица, которая и используется для определения расположения фай лов и папок (табл. П1.5).
Рис. П1.8. Диалоговое окно Options, вкладка File Locations Таблица П1.5. Файлы для работы Visual FoxPro Имя (по умолчанию)
Тип файла
Назначение файла
ActiveDoc Launcher
Определяет имя и расположение при ложения, вызываемого командой Run Active Doc (Запустить активный доку мент) из меню Tools (Инструменты)
Runactd.prg
Builders
Определяет имя и расположение при ложения построителя (Builder)
Builder.app
Class Browser
Определяет имя и расположение при ложения Class Browser
Browser.app
Component Gallery
Определяет имя и расположение при ложения Component Gallery
Galery.app
Converter
Определяет имя и расположение при ложения, осуществляющего конверта цию форм и отчетов, разработанных в ранних версиях FoxPro в формат данной версии
Converter.app
Приложение 1
436
Таблица П1.5 (продолжение) Тип файла
Назначение файла
Coverage Profiler
Определяет имя и расположение при ложения для статистической обработки созданных приложений
Default Directory
Имя каталога по умолчанию, в котором Visual FoxPro будет размещать про граммные файлы и таблицы
Default Include File
Определяет имя и расположение фай ла, в котором будут заданы различные константы
Documenting Wizard
Определяет имя и расположение при ложения для документирования прило жений и программ
Expression Wizard
Определяет имя и расположение по строителя приложений
HTML Generator
Определяет имя и расположение при ложения, которое используется для со хранения созданного приложения в формате HTML
Help File
Определяет имя и расположение справ ки
Menu Builder
Определяет имя и расположение по строителя меню
Resource File
Определяет имя файла ресурсов. Ресурсный файл FOXUSER.DBF- обыч ная таблица, в которой хранится ин формация об установках редактора, режимах работы, размерах окон и т. д.
Samples Directory
Определяет имя и расположение ката лога с учебными примерами Visual FoxPro
Search Path
Задает каталог, в котором будет про должен поиск файлов, не найденных в текущем каталоге
Spelling Checker
Определяет имя и расположение при ложения для проверки орфографии
Startup Program
Определяет имя и расположение при ложения, которое начинает работать при запуске Visual FoxPro
Имя (по умолчанию) Coverage.арр
Beautify.app
GetbtmJ.app
Vfp6strt.app
Настройка параметров конфигурации Visual FoxPro
437 Таблица П1.5 (окончание)
Тип файла
Назначение файла
Temporary Files
Каталог для создания временных фай лов
Wizards
Определяет имя и расположение масте ров
Имя (по умолчанию)
Вкладка Forms (Формы) (рис. ГЛ.9) используется для настройки конструк тора форм. Ее параметры описаны в табл. Ш.6.
Рис. П1.9. Диалоговое окно Options, вкладка Forms Таблица П1.6. Параметры вкладки Forms Параметр
Описание
Grid lines (Линии сетки)
Отображение линий сетки
Horizontal spacing (Интервал по горизонтали)
Определяет расстояние между горизонталь ными линиями сетки (в пикселах)
Vertical spacing (Интервал по вертикали)
Определяет расстояние между вертикальны ми линиями сетки (в пикселах)
Приложение 1
438
Таблица П1.6 (окончание) Параметр
Описание
Snap to grid (Привязка к сетке)
При перемещении объекта в макете формы он автоматически устанавливается в ближай шую точку пересечений линий сетки
Show position (Показать позицию)
При установленном флажке в строке состоя ния будут отображаться размер и позиция верхнего левого угла объекта
Tab ordering (Порядок табуляции)
Определяет, в каком порядке элементы I управления будут получать фокус при работе формы. Имеется два значения: Interactive (Интерактивно) и By list (По списку). При ус тановленном значении Interactive (рис. П1.10) для определения порядка получения объек тами фокуса необходимо нажать клавишу <Sr»ft> и поочередно щелкать мышью на эле ментах управления. При установке значения By list (рис. Л 1.11) порядок табуляции будет отображен в виде списка
Scale units (Единица измерения)
Выбор единицы измерения для определения размеров объектов. Используются две едини цы: пиксел и фоксел
Maximum design area (Максимальная рабочая область)
Задается максимальная разрешающая спо собность экрана
Template classes (Классы шаблонов)
С помощью данного шаблона можно опреде лить два класса, которые будут использованы как шаблоны для форм и наборов форм
Builder lock (Привязка построителя)
Автоматический запуск построителя встраивании обьекта в форму
Prompt to save changes before running form (Предлагать сохранять изменения при запуске формы)
Если этот флажок снять, то все изменения после редактирования формы будут автома тически сохранены перед ее запуском
при
На вкладке Genera] (Общие уста*говки) (рис. П1.12) устанавливаются параметры общего назначения, такие и <Shift>+ возвра щается код 26, а при нажа тии клавиш + возвращается код 1
При нажатии клавиш <Shift> и <Shift>+ возвра щается код 1, а при нажатии клавиш + возвращается код 26
LASTKEY()
Возвращает код последней нажатой клавиши
Рекомендуется использовать
LIKEO
Пробелы в строках удаляют ся перед сравнением
Пробелы не удаляются
MENU И POPUP
Меню размещается в теку щем окне, курсор распола гается на одной из опций списка
Меню размещается в собст венном окне, курсор распо лагается в активном окне
Вложенные операторы
При возвращении на более высокий уровень выполняет
При возвращении на более высокий уровень текущие
ся команда CLEAR GETS
установки GETS остаются
Параметры, передаваемые по ссылке, доступны в вызы ваемой процедуре
Параметры, передаваемые по ссылке, недоступны в вызываемой процедуре
Передаваемые параметры
INKEY()
Приложение 1
442
Таблица П1.8 (продолжение) Команда
ON
OFF
PLAY MACRO
Добавляется неявная ком бинация клавиш + перед макросами, начи нающимися с букв A—Z, а перед макросами F1— F9 неявно добавляется
Ничего не добавляется
READ
При нажатии клавиши проверяется значение
Проверка не выполняется
оператором V A L I D
RUN
Перед началом вывода кур сор передвигается на пер вую позицию 24 строки. По сле завершения экран сдви гается на 3 строки вверх
Вывод происходит с текущей позиции курсора. После вы полнения экран сдвигается на 2 строки вверх
SELECT ()
Возвращает наибольший номер неиспользованной рабочей области
Возвращает номер выбран ной рабочей области
SET COLOR TO
Устанавливает цвета окон и меню, определенных поль зователем
Рекомендуется использовать команду COLOR OF SCHEME
SET BORDER
Устанавливает границы окон, меню и полей
SET FIELDS
Определяет список полей, к которым возможен доступ
SET MEMOWIDTH
Определяет ширину символьных выражений и Мемо-полей
SET MESSAGE
Отображает символьное выражение в последней строке экрана
Выражение отображается только при установке SET STATUS ON
SET PRINTER TO
Выходной файл имеет расширение prt
Не имеет расширения
STORE
Не может присвоить значе ния сразу всем элементам массива
Может присвоить значения сразу всем элементам мас сива
SUM
Количество десятичных знаков при выполнении этой команды определяется КОМаНДОЙ SET DECIMALS TO
Количество десятичных зна ков при выполнении этой команды определяется фор матом суммируемого поля
Настройка параметров конфигурации Visual FoxPro
443 Таблица П1.8 (окончание)
Команда
ON
OFF
SYS(2001,"COLOR")
Возвращает значение, уста новленное командой SET COLOR
Возвращает значение цвето вой пары для оператора SET COLOR TO
TRANSFORM
Возвращает строку симво лов из символьного или чи слового выражения
USE
Если указан путь VFP и в команде указано устройст во, то поиск файла произ водится только на указан ном устройстве
Если указан путь VFP и в команде указано устрой ство, то поиск файла произ водится сначала на указан ном устройстве, а потом — по указанному пути
Если установлен флажок Use Visual FoxPro color palette (Использовать па литру Visual FoxPro), то Лис будет использовать собственную цветовую па литру при просмотре растровых изображений. В противном случае будет задействована палитра, используемая при создании изображения. Данный параметр соответствует команде SET PALETTE. Опция Confirm file replacement (Подтверждать замену файла) определяет, будет ли отображаться сообщение перед записью существующего файла. Команда SET SAFETY. Флажок Browse IME Control (Просмотр с помощью IME) устанавливается только при использовании двухбайтовой символьной системы. IME — это Input Method Editor (Редактор метода ввода). А еще на вкладке General (Общие установки) имеются три опции, связан ные с программированием: • Cancel programs on escape (Прекращать работу программ при нажатии клавиши <Esc>). Соответствует команде SET ESCAPE; • Log compilations errors (Отслеживать ошибки при компиляции) — при компиляции файлов информация о возникших ошибках выводится на экран. В то же время вся информация об ошибках сохраняется и в спе циальном файле с расширением err; • При установке флажка SET DEVELOPMENT (Режим разработки) перед запуском откомпилированного файла происходит проверка, не вносились ли в него изменения. Если изменения обнаружены, файл будет переком пилирован. Раскрывающийся список Navigation keys (Клавиши навигации) содержит два элемента: Windows Compatible и MS-DOS Compatible (соответственно,
Приложение 1
444
совместимые с Windows и совместимые с DOS). Выбор значения этого спи ска соответствует команде SET KEYCOMP. С помощью опции Fill new records with current values (Заполнять новые за писи текущими значениями) можно переносить содержимое текущей запи си в новую запись таблицы. Соответствует команде SET CARRY. Если установлен флажок Enter or tab to exit fields (Нажать <Enter> или для выхода из поля), то пользователь может перейти на следующее поле, лишь используя клавиши <Enter> или .
Рис. П1.13. Диалоговое окно Options, вкладка Projects
Параметры вкладки Projects (Проекты) (рис. П1.12) связаны с использова нием диспетчера проектов. В области Project double-click action (Действие, выполняемое проектом при двойном щелчке) находятся следующие опции: • Run selected file (Запустить выбранный файл) — при двойном щелчке на имени файла в окне диспетчера проекта указанный файл запускается на выполнение; • Modify selected file (Модифицировать выбранный файл) — при двойном щелчке на имени файла в окне диспетчера проекта указанный файл от крывается для модификации. Например, при щелчке на файле экранной формы эта форма откроется в конструкторе.
Настройка параметров конфигурации Visual FoxPro
445
При установленном флажке Prompt for Wizards (Предлагать мастеров) Лис "поинтересуется", будем ли мы создавать файл вручную или же воспользу емся соответствующим мастером. Установка флажка Display user-defined container icons (Отображать значки, определенные пользователем) позволяет отображать эти самые значки в ок не диспетчера проекта. Далее расположена группа опций Source control options (Параметры управ ления ресурсами) (табл. П1.9). Если установлен пакет Microsoft Visual SourceSafe (VSS), то его название должно быть указано в раскрывающемся списке Active source control provider (Активный провайдер управления ре сурсами). Таблица П1.9. Параметры группы Source control options Параметр
Описание
Automatically add new projects to source control (Автоматически добавлять новые проекты в систему управления исходными данными)
Понятно из названия
Check out files upon modify (Отметить файлы при модификации)
При попытке модифицировать файл автоматически будет вызван Microsoft Visual SourceSafe
Add files to source control upon add (Добавлять файлы в систему управления исходными данными при добавлении в проект)
Происходит автоматическое добавле ние новых файлов проекта в Microsoft Visual SourceSafe
Remove files from source control upon removal from project (Удалять файлы из системы управления ресурсами при уда лении из проекта)
То же самое, что и предыдущий пара метр, только наоборот. При удалении файла из проекта удаляются ссылки на него в Microsoft Visual SourceSafe
Display dialog box for shortcut menu commands (Открывать диалоговое окно из всплывающего меню команд)
При установке этого флажка можно выполнять команды Microsoft Visual SourceSafe из контекстного меню про екта для нескольких файлов
В поле ввода Text generation (Генерация текста) можно задать имя файла, который осуществляет сохранение целостности информации между Microsoft Visual SourceSafe и VFP. В поле ввода Project class (Класс проекта) можно ввести имя класса, кото рый будет использован при создании новых проектов. На вкладке Regional (Региональные) (рис. П1.14) можно задать параметры, отвечающие за форматы дат, времени, валюты и числовых данных. Самым "главным" здесь является флажок Use System Settings (Использовать сие-
Приложение
446
1
темные установки). А знаешь почему? Да потому что при его установке все остальные опции станут недоступными и в работу вступят системные уста новки. Другое дело, когда данный флажок не установлен — табл. ШЛО.
Рис. П1.14. Диалоговое окно Options, вкладка Regional
Таблица П1.10. Параметры вкладки Regional Параметр
Описание
Date Format (Формат даты)
Из данного раскрывающегося списка можно выбрать название наиболее подходящего формата для отображения дат
Date Separator (Разделитель даты)
Изменение символа разделения даты
Century (Столетие)
Влияет на отображение в дате года— либо четырьмя символами, либо двумя
12-Hour, 24-Hour (12 часов, 24 часа)
12- либо 24-часовой формат отображения времени
Seconds (Секунды)
При установке данного флажка отображаются секунды
Currency Format (Формат денежной единицы)
С помощью этого списка можно определить, где будет отображаться символ денежной единицы: перед числом или за ним
Настройка
параметров
конфигурации
Visual
FoxPro
447
Таблица П1.10 (окончание) Параметр
Описание
Currency Symbol (Символ денежной единицы)
Позволяет определить символ денежной еди ницы. Команда SET CURRENCY TO
1000 Separator (Разделитель тысяч)
Здесь задается символ, который отображает ся после каждой третьей цифры слева от де сятичного знака — разделяет тысячи
Decimal Separator (Десятичный разделитель)
Символ для разделения целой и дробной час тей числа
Decimal Digits (Десятичные цифры)
Определяет минимальное количество деся тичных знаков. Диапазон значений от 0 до 18. Команда SET DECIMALS TO
Week Starts on (Неделя начинается с)
Здесь можно указать, с какого дня начинается неделя. Что? Это у нас с понедельника, а у "них" немного по-другому...
First Week of Year (Первая неделя года)
Тут возможны три значения: Contains Jan 1 (Включая 1 января), First 4-Day Week (Первая неделя — 4-дневная) и First Full Week (Первая неделя — полная)
На вкладке Remote Data (Удаленные данные) (рис. П1.15) определяется, каким образом Лис работает с удаленными данными и с представлениями удаленных данных (табл. П1.11). Что такое представление удаленных дан ных? Это любой файл данных, который не является базой данных или таб лицей FoxPro. Таблица П1.11. Параметры вкладки Remote Data Параметр
Описание
Share connection (Общее соединение)
При установке флажка данной опции можно открыть несколько удаленных представлений данных
Fetch memo (Выбрать мемо-поля)
Выборка мемо-полей при удаленном соединении происходит только в том случае, когда пользо ватель активизировал Мемо-поле. Данный фла жок рекомендуется устанавливать для снижения нагрузки сети
Criteria (Критерий)
Используется для управления обновлением SQL. Возможны четыре значения: Key Fields Only (Только ключи), Key and update Fields (Ключи и обновляемые поля), Keys and Modified Fields (Ключи и модифицированные поля), Key and TimeStamp (Ключи и поля меток времени)
448
Приложение 1 Таблица П1.11 (продолжение)
Параметр
Описание
Method (Метод обновления)
При выборе первого варианта SQL Update (Об новление) обновление данных происходит с по мощью SQL-функции update, а при выборе вто рого (SQL Delete + SQL Insert— удаление и вставка) сначала удаляются старые записи, а затем вставляются другие с новыми значениями
Records to fetch at a time (Одновременно выбрать записи)
Данная опция предназначена для ограничения нагрузки на сеть и определяет количество запи сей, возвращаемых от запроса за один раз
Maximum records to fetch (Максимальное число считываемых записей)
Позволяет определить максимальное число записей, возвращаемых запросом за один раз
Use memo for fields >= (Использовать тип memo для полей)
Некоторые удаленные таблицы могут поддержи вать длинные символьные поля. Данная опция позволяет автоматически преобразовывать та кие поля в поля типа Memo
Records to batch update (Число записей для группового обновления)
Здесь определяется число записей, отправляе мых серверу в одной инструкции SQL
Asynchronous execution (Асинхронное выполнение)
При установке асинхронного выполнения твое приложение может не дожидаться, пока пол ностью закончится обработка инструкции SQL, a выполнять в это время другие действия
Display warnings (Отображать предупреждения)
Определяет, нужно ли выводить на экран сооб щения об ошибках, возникающих при обработке инструкции SQL
Batch processing (Пакетная обработка)
Данная опция определяет, каким образом будут считываться несколько результирующих набо ров
Automatic transactions (Автоматическая обработка транзакций)
Определяет, будет ли транзакция SQL обраба тываться средствами Visual FoxPro (автоматиче ски)
Show login (Показывать окно регистрации)
В некоторых случаях при доступе к удаленным данным может потребоваться регистрация. Вот в этом раскрывающемся списке и можно настро ить отображение окна регистрации: Always (Всегда), Never (Никогда), Only When Neces sary (При необходимости)
Connection timeout (Время ожидания соединения)
Указывается интервал времени (в секундах), в течение которого средства соединения будут ожидать распознавание сервером
Настройка параметров конфигурации Visual FoxPro
449 Таблица П1.11 (окончание)
Параметр
Описание
Idle timeout (Время бездействия)
Определяется время (в минутах), в течение ко торого будет поддерживаться соединение, но не будет производиться никаких действий. Если установлено 0 (по умолчанию), то соединение сразу же разрывается
Query timeout (Время ожидания завершения запроса)
Указывается, сколько секунд приложение будет ждать завершения отправленного запроса. Если за указанное время ответ не пришел, будет вы дано сообщение об ошибке
Wait time (Время ожидания)
Время в миллисекундах, через которое Лис проверяет, завершилось или нет выполнение инструкции SQL
Рис. П1.15. Диалоговое окно Options, вкладка Remote Data
С помощью параметров вкладки Syntax Coloring (Раскраска синтаксических структур (рис. П1.16) можно выделять цветом различные типы текста про грамм. 15 3ак. 1002
Приложение 1
450
Рис. П1.16. Диалоговое окно Options, вкладка Syntax Coloring
Те типы текста, которые "поддаются" раскраске, перечислены в раскры вающемся списке Area (Область): • Comments — комментарии; • Keywords — ключевые слова; • Literals — литералы; • Normal — стандартно; • Operators — операторы; • Strings — строки; • Variables — переменные. Для любого типа текста можно выбрать любой стиль шрифта из раскры вающегося списка Font style (Стиль шрифта): • Automatic — автоматически; • Normal — обычный; • Bold — полужирный; • Italic — курсив; • Bold italic — полужирный курсив. Раскрывающиеся списки Foreground (Цвет шрифта) и Background (Цвет фо на) содержат перечень возможных цветов для любого типа текста.
Настройка параметров конфигурации Visual FoxPro
451
Рис. П1.7. Диалоговое окно Options, вкладка View
С помощью вкладки View (Вид) (рис. П1.16) можно указать, что и как будет отображаться в строке состояния (табл. П1.12). Таблица П1.12. Параметры вкладки View Параметр
Описание
Status bar (Строка состояния)
С помощью этой опции можно указать, отобра жать или не отображать в нижней части экрана строку состояния. Если строка состояния отсут ствует, то все системные сообщения будут ото бражаться в служебном окне в правом верхнем углу экрана
Clock (Часы)
При установке этого флажка в строке состояния будет отображаться системное время
Command results (Результаты команд)
При установке этого флажка в строке состояния будут отображаться результаты выполнения команд
System messages (Системные сообщения)
При установке этого флажка можно разрешить или запретить вывод системных сообщений
Recently used project list (Запомнить список последних проектов)
При установке этого флажка в меню File (Файл) будет отображен список последних четырех про ектов
452
Приложение 1 Таблица П1.12 (окончание)
Параметр
Описание
Open last project on startup (Открывать последний проект при запуске)
При запуске Visual FoxPro будет автоматически открыт последний проект
Что еще сказать про настройку нашего Лиса? Наверное, лишь то, что если после установки всех необходимых параметров ты нажмешь кнопку ОК, все твои установки сохранятся только на время текущего сеанса работы. А вот если щелкнуть на кнопке Set As Default (Установить по умолчанию), уста новленные тобой параметры будут действовать вечно, т. е. до последующего их изменения.
ПРИЛОЖЕНИЕ 2
Возможные значения различных параметров Здесь я расскажу о значениях некоторых параметров, которые ты можешь использовать в своей работе с Visual FoxPro и которые значительно облегчат тебе жизнь. А начну я с клавиш ускоренного доступа к командам системного меню — табл. П2.1. Таблица П2.1. "Горячие" клавиши Меню
Команда меню
"Горячие" клавиши
File (Файл)
New (Создать)
+
Open (Открыть)
+
Save (Сохранить)
+<S>
Print (Печать)
+
Undo (Отменить)
+
Redo (Повторить)
+
Cut (Вырезать)
+<X>
Сору (Копировать)
+
Paste (Вставить)
+
Select All (Выделить все)
+
Find (Найти)
+
Find Again (Найти еще)
+
Replace (Заменить)
+
Do (Выполнить)
+
Resume (Продолжить)
+<M>
Do текущая программа (Выполнить текущую программу)
+<E>
Edit (Редактирование)
Program (Программа)
Приложение 2
454
Таблица П2.1 (окончание) Меню
Команда меню
"Горячие" клавиши
Window (Окно)
Cycle (Цикл)
+
Command Window (Окно команд)
+
Возможные значения свойства Format (Формат) для элементов управления EditBox, TextBox, Spinner представлены в табл. П2.2. Таблица П2.2. Значения свойства Format Символ 1
Описание Преобразование прописных букв в строчные
А
Разрешается ввод только алфавитных символов без знаков пунктуации и пробелов
D
Используется текущий формат SET DATE
Е
Редактирование данных типа Date в формате BRITISH
К
При переходе на элемент управления TextBox выделяется все его со держимое
L
В полях ввода вместо пробелов будут отображаться лидирующие нули (для числовых данных)
М
Позволяет задать список значений для элемента управления TextBox
R
Позволяет создавать маску ввода для элемента управления
Возможные значения свойства input Mask (Маска ввода) для элементов управления EditBox, TextBox, Spinner представлены в табл. П2.3. Таблица П2.3. Значения свойства input Mask Символ
Описание
9
Цифры и знаки
#
Цифры, пробелы и знаки
X
Любой символ
$
Отображение текущего денежного символа (определяется командой SET CURRENCY)
*
Отображения символа "звездочка" слева от значения Десятичная точка отображается символом "точка"
1
Для отделения порядков в числе используется запятая
Возможные значения различных параметров
Форматы дат, устанавливаемые командой
SET DATE,
455
описаны в табл. П2.4.
Таблица П2.4. Отображение дат по команде SET DATE SET DATE TO . . .
Формат отображения
AMERICAN
мм/дд/гг гг.мм.дд дд/мм/гг дд-мм-гг дд/мм/гг дд.мм.гг гг/мм/дд гг/мм/дд мм-дд-гг мм/дд/гг дд/мм/гг гг/мм/дд
ANSI BRITISH ITALIAN FRENCH GERMAN JAPAN TAIWAN USA MDY DMY YMD
Типы экспортируемых форматов описаны в табл. П2.5. Таблица П2.5. Экспортируемые форматы Тип
Обозначение
Visual FoxPro 3.0 (DBF)
Назначение Копирование таблиц
FoxPro for Windows 2.x (DBF)
FOX2X
Экспорт в формат FoxPro for Windows 2.x
FoxBase+ (DBF)
FOXPLUS
Экспорт в формат FoxBase+ • Экспорт в формат dBase IV Экспорт в текстовый файл с разделителями
dBase IV (DBF) Delimited Text Microsoft Excel 5.0 (XLS)
XL5
Экспорт в формат Microsoft Excel 5.0
Microsoft Excel 2.0, 3.0, 4.0 (XLS)
XLS
Экспорт в формат Microsoft Excel 2.0, 3.0, 4.0
Lotus 1-2-3 2.x (WK1)
WK1
Экспорт в формат Lotus 1 -2-3 2.x
Lotus 1-2-3 1 -A (WKS)
WKS
Экспорт в формат Lotus 1 -2-3 1 -А
456
Приложение 2 Таблица П2.5 (окончание)
Тип
Обозначение
Назначение
Symphony 1.10 (WR1)
WR1
Экспорт в формат Symphony 1.10
Symphony 1.01 (WRK)
WRK
Экспорт в формат Symphony 1.01
MultiPlan 4.01 (MOD)
MOD
Экспорт в формат Multiplan 4.01
Data Interchange Format (DIF)
DIF
Экспорт в текстовый файл, используемый приложением VisCalc
System Data Format (SDF)
SDF
Экспорт данных в стандартный текстовый файл
Symbolic Link Format
SYLK
Экспорт в текстовый файл, используемый таблицей Multiplan
Использование диалоговых окон типа MessageBox Мы с тобой уже знаем, что такое MessageBox, и неоднократно его использо вали. Но, оказывается, в MessageBox можно задать несколько дополнитель ных параметров, после чего его вид существенно преобразится. В общем, синтаксис тут такой: MessageBox
{Текст
сообщения,
тип диалогового
окна,
заголовок)
Раньше мы с тобой успешно обходились без указания типа диалогового ок на, его, кстати, можно вообще не указывать, как и заголовок. Но если ты решишь использовать данный аргумент, то необходимо знать, что это всегонавсего число, которое определяется как сумма трех параметров: типа кно пок, типа значков и номера кнопки, выбранной по умолчанию. Вот значе ния этих параметров — табл. П2.6—П2.9. Таблица П2.6. Тип кнопок, отображаемых в диалоговом окне Значение
Кнопка
0
ОК
1
ОК и Cancel (Отмена)
2
Abort, Retry, Ignore (Прекратить, Повторить, Пропустить)
3
Yes, No, Cancel (Да, Нет, Отмена)
4
Yes, No (Да, Нет)
5
Retry, Cancel (Повторить, Отменить)
Возможные значения различных параметров Таблица П2.7. Типы значков, отображаемых в диалоговом окне Значение
Значок
16
Значок Stop
32
Вопросительный знак
48
Восклицательный знак
64
Значок (1)
Таблица П2.8. Кнопка, выбираемая по умолчанию Значение
Кнопка
0
Первая кнопка
256
Вторая кнопка
512
Третья кнопка
Таблица П2.8. Значения, возвращаемые функцией MESSAGEBOX Значение
Кнопка
1
ОК
2
Cancel (Отмена)
3
Abort (Прекратить)
4
Retry (Повторить)
5
ignore (Пропустить)
б
Yes (Да)
7
No (Нет)
Рис. П2.1. Пример диалогового окна MessageBox
457
458
А теперь самое время для практического примера: IF MESSAGEBOX("ЗАКОНЧИТЬ РАБОТУ С ПРИЛОЖЕНИЕМ?",; 1+32+256, "ЗАВЕРШЕНИЕ РАБОТЫ")=1 QUIT ENDIF
Результат представлен на рис. П2.1.
Приложение 2
ПРИЛОЖЕНИЕ 3
Полезные советы Здесь я дам тебе несколько полезных советов, касающихся как отдельных элементов управления, так и программирования в целом.
Экранные формы Лис хранит формы, классы, проекты, отчеты в обычных DBF-таблицах, ко торые можно открыть простой командой USE И просмотреть содержимое (рис. ПЗЛ). Например: USE main.sex BROWSE
Для чего это нужно? А не попадалось ли тебе такое сообщение об ошибке: "Error loading file — record number 5 main