Рассылка закрыта
При закрытии подписчики были переданы в рассылку "БЛОГика: полезные советы" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Введение в классы Application.
|
||
Практическая работа с Visual Studio.Net и Microsoft Office |
Оглавление
➲Краткие сведения об этой рассылке |
➲Практическая работа с Visual Studio.Net |
➲Практическая работа с Microsoft Office |
➲Web-технология |
➲Создание реальных проектов |
➲Вопросы и ответы |
Краткие сведения об этой рассылке |
Статистика | |
Номер выпуска рассылки | 5 |
Дата выпуска рассылки | 2006-03-20 |
Время выпуска рассылки | 01:15:33 |
Возраст рассылки в днях | 44 |
Количество подписчиков | 875 |
Динамика подписчиков за вчера | +1 |
Динамика подписчиков за неделю | +48 |
Мои ресурсы
Дружественные ресурсы
Подписка почтой
Практическая работа с Visual Studio.Net и Microsoft Office
Обсуждение VS.Net 2003, MSOffice 2003
Visual Basic для новичков и профессионалов
Шаблон этой рассылки подвергся небольшому изменению. Теперь подписаться на дружественные ресурсы можно по почте. Что, во-первых, экономит время, а во-вторых, деньги за доступ в Интернет. В этом выпуске я кратко ознакомлю вас с классами Application в Visual Studio.NET и Microsoft Office.
Практическая работа с Visual Studio.Net |
Введение в класс Application.
В двух предыдущих выпусках я расписал функцию Main для проектов создаваемых при помощи мастеров Console Application и Windows Application.
ë |
В чём же отличие этих мастеров? Если смотреть на функцию Main, то можно видеть, что в её содержимом вызывается текущая форма проекта. Даже Visual Basic.NET, в котором эта функция или процедура изначально отсутствует, и если так и не будет введена, то генерируется автоматически, должен присутствовать запуск окна формы.
Для работы каркасная (framework) библиотека Windows Forms нуждается в высокой степени управления нашим приложением. В частности, она должна правильно реагировать на такие виды ввода, как и все приложения Windows запрашивающие handle (обработчик), такие как щелчки мыши и запрос на перерисовку. А это в свою очередь означает, что библиотека framework будет нести ответственность за управление главными потоками большую часть времени. В противном случае она не сможет иметь дело с этими событиями.
Хотя исполнением нашего приложения закулисно руководит framework, мы можем по-тихому влиять на его поведение, используя класс Application. Для примера, у нас есть возможность сообщить framework завершить нашу программу, вызвав метод Application.Exit. Фактически, взаимодействие с классом Application является первой вещью, с которой начинают выполняться большинство программ. Типичное начало запуска приложение начинается в функции Main методом Application.Run для передачи управления Windows Forms. Это так же становиться причиной отображением framework объекта Form, после чего он принимает на себя управления и начинает ждать событий. Следовательно, наш код будет выполнен только в том случае, когда произойдёт событие (event), на которое имеется соответствующий обработчик событий, то есть функция, построенная по определённым правилам. Не забывайте, что сейчас речь идёт только о приложениях созданных при помощи мастера Windows Application.
Этот управляемый-событиями стиль исполнения важный признак Windows Forms. Каркасная (framework) библиотека способна иметь дело с событиями только тогда, когда мы отдаём ей ответственность за них. Конечно, когда один из наших обработчиков запущен, ответственность временно переходит к нам, а точнее к коду, написанному нами, пока не будет опять возвращена обработчику. И это замечательно, что нас каждый раз не спрашивают, нужно ли выполнять событие, пока мы не завершили другое. В противном случае жизнь программиста стала бы невыносима сложна. То есть можно ввести порядок вызова событий, написав для этого функцию их вызова, ведь тогда они будут выполняться в ней последовательно. Это так называемые приоритеты, когда можно быть уверенным в порядке вызова событий. Но в других случаях события идут в виде очереди сообщений Windows в случайном порядке и отправляются в разные приложения, однако мы можем быть уверены, что они не будут пересекаться. Ведь даже вызов событий в функции всего лишь отправит их в очередь в определённом порядке, а не заставит немедленно выполняться в коде. В общем, уясните себе одну важную вещь, вызвать событие, это не тоже, что вызвать обычную функцию. И это не с точки зрения кода, а с позиции начала выполнения этого кода в программе.
Единственная проблема такого подхода в обработке событий заключается в том, что если наш обработчик события будет слишком долго выполняться, то пользовательский интерфейс не будет откликаться. Пока наш код не возвратит управление на framework, пользователь не сможет щёлкать по окну своей программы или перемещать его. Конечно, все ваши действия по вызову событий будут сохранены в очереди сообщений, и начнут выполняться после завершения вашего обработчика, как вы это наблюдали в других приложениях Windows. Но какое удовольствие работать со статическим интерфейсом, когда не известно, что и как будет в последствии выполнено? Мы не сможем даже дать пользователю путь для выхода из этой операции хотя бы потому, что метод управления интерфейсом основывается на той же очереди событий, одно из которых выполняется, и не даст другим вмешаться до завершения.
Выход есть, нужно писать нужную вам функцию, а в коде выполнения вашего алгоритма должна быть проверка событий из очереди сообщений Windows. К примеру, можно написать цикл, в теле которого будет зашита проверка вызова события на его завершение, которое можно будет запустить через интерфейс пользователя. Именно так и работают архиваторы, дефрагментаторы и прочие программы, требующие продолжительного времени для выполнения процесса и нуждающиеся в экстренном прекращении дальнейших действий. Для этого случая в классе Application предусмотрен метод DoEvents. Кстати, подобное существует и в продуктах Microsoft Office. К этому программному продукту прилагается специальная библиотека VBA, в которой содержится модуль Interaction с методом DoEvents. Как видите, функция называется точно так же как Visual Studio.NET, что не удивительно, учитывая общую фирму-производитель. Вам нужно над этим серьёзно поразмыслить, так как существует огромная разница между работой с конкретным языком, и понимания систем программирования в целом. Чуть позже я расскажу об этом более подробно.
На сегодня всё. В этом выпуске мы кратко поговорили о классе Application, а в вот следующих изданиях нам придётся взяться за него более плотно, так как он является основой успешной работы приложений Windows .
Практическая работа с Microsoft Office |
Параметры базы данных.
В прошлом выпуске этой рубрики мы познакомились с окном и объектами базы данных. Если вы только что подписались и не понимаете о чём речь, то можете заказать предыдущие издания, как описано ниже в рубрике ➲Вопросы и ответы . Настало время узнать, что же из себя представляют, параметры базы данных. Для начала воспользуемся пользовательским подходом. Откройте вкладку Сервис⇒Параметры... .
N |
По названию - параметры трудно догадаться какой метод нужно использовать, чтобы менять их программным путём. Если бы вы обладали англоязычной версией, то вызов диалогового окна параметров сопровождался бы следующим путём Tools⇒Options... . То есть мы вызвали бы диалоговое окно с именем Options в строке заголовка. Из этого не трудно догадаться, что достаточно набрать в поиске справки слово options, и вы немедленно обретёте искомое. Я воспользовался поисковой системой из редактора Visual Basic и получил множество результатов, однако моё внимание привлекли только два метода. Первый это GetOption method и второй соответственно SetOption method. Зачем спрашивается вводить функции с приставками , когда можно просто создать свойство? Если включить поиск этих методов через Object Browser редактора Visual Basic , то мы увидим, что они находятся в классе Application библиотеки Access . Так как он является главным, то значит существует лишь одно объяснение не применения разработчиками свойства . А именно то, что параметры не являются объектами базы данных . То есть, внутри файла с расширением mdb или adp они отсутствуют.
ë |
Мы выяснили, что параметры это не объекты базы данных . Тогда если перенести базу на другой компьютер, там будут присутствовать совершенно другие настройки . А свойства (Properties) следует вводить в основном лишь для хранения объектов . Таким способом разработчики Microsoft Office позаботились о том, чтобы нам не пришлось гадать обращаемся ли мы к объектам внутри базы данных , или к совершенно посторонним объектам . Конечно не всегда всё так гладко. Например библиотека DAO имеет ряд существенных недостатков, но об этом как-нибудь в другой раз.
Следующим вызовом можно установить показ строки состояния :
Application.SetOption "Show Status Bar", True
Или напротив убрать её из Access :
Application.SetOption "Show Status Bar", False
Можете потренироваться и создать форму с двумя кнопками. Во время нажатий кнопок состояние показа строки состояния будет изменяться в реальном времени.
Á
Visual Basic 6.3 |
С методом GetOption дела обстоят точно так же, только мы уже не устанавливаем, а получаем параметры программы Access. Вот теперь мы и подошли к главному. То есть для работы с базами данных Access мы можем использовать программирование в оболочке программы Access. Если же нас это по каким-то причинам не устраивает, то существует другие способы, к примеру, воспользоваться Visual Studio.NET . Подобный способ будет ничуть не хуже, а во многом даже и лучше. Но тогда нам совершенно не нужно учить Visual Basic 6.3 и библиотеку Microsoft Access 11.0 Object Library , так как мы сможем воспользоваться DAO , ADO и множеством других средств для доступа к базе данных. Кончено, DAO и ADO доступны в оболочке Access через ту же Microsoft Access 11.0 Object Library , однако не слишком изощрённая база может вполне обойтись и без них. В общем, вы должны усвоить, что база данных Access , это не часть программы Microsoft Access, то есть у нас есть возможность создавать и использовать базу данных, даже если на компьютере не установлен Microsoft Office. Воспринимайте Microsoft Access 2003 как удобную оболочку, которая облегчает работу, но ни в коем случае не становиться её центром.
Домашнее задание. Просмотрите внимательно содержимое библиотеки Microsoft Access 11.0 Object Library, если у вас Microsoft Office 2003 и Microsoft Access 10.0 Object Library, если у вас 2002 версия. Загляните в класс Application, попробуйте разобраться как он работает, под рукой у вас есть пусть и английская, но зато довольно подробная справка.
Web-технология |
Часики.
Из-за технических неполадок, мне уже в который раз не удаётся показать вам стандартный пример часов из описания библиотеки Direct Animation. Но вот, наконец, код, правильно преобразованный в HTML формат. Просто создайте файл с именем clock.html, вставьте в него следующий текст и запустите пример браузером Internet Explorer.
"
HTML |
После того, как вам надоест любоваться этим примером, запустите его при помощи Visual Studio. Для скорости это можно сделать в контекстном меню проводника - Edit with Visual Studio .Net 2003. Обратите внимание на тэг OBJECT во View HTML Source, его содержимое удобно сворачивается. Так же заслуживает рассмотрения код начинающийся <SCRIPT LANGUAGE="VBScript"> и заканчивающийся </SCRIPT>. Возьмите любую веб-страницу, и скопируйте эти тэги (OBJECT и SCRIPT), а так же их содержимое внутрь тела (BODY). Если вы всё правильно сделали, код заработает без проблем. Единственное условие, что лучше всего его запускать через Internet Explorer. Можете разместить ваши часики прямо на рабочем столе, так как Windows это в полнее позволяет.
Создание реальных проектов |
Человек и проект.
Пока эта рубрика свободна от кода, просто поговорим о том, каким должен быть человек, чтобы уметь писать реальные проекты. Под проектами я подразумеваю законченные решения. Вы ведь заметили, что именно так они и называются в системе .NET (читается - дот нэт). То есть понятие решения (solution) вводится мастером создания проектов сразу, а вот над тем, что должно получиться, именно вам придётся основательно потрудиться. Я особо подчёркиваю, что мастер создаёт проекты, а не решения, то есть он может создать новое решение с новым проектом, но в основном предназначен для добавления проекта в решение. В предыдущих выпусках я рассказывал о двух радио кнопках Add to Solution и Close Solution, которые появляются в меню New Project, когда решение уже открыто. Это значит, что в решение можно смело добавлять новые проекты.
Для чего это нужно? В первую очередь очень удобно будет пользоваться подобными возможностями, если вы захотите создать в дополнении к исполняемому файлу ещё и Dynamic Link Library, сокращённо DLL. Лучше всего перевести данные слова, как Динамически Загружаемая Библиотека. Вы ведь располагаете сведениями о том, что любой большой код выполняется процессором из оперативной памяти (не будем пока говорить о регистрах и кэш памяти процессора). Так вот, именно туда и загружается библиотека, когда используются функции заключённые в ней. Если же подобного не происходит, то определённые средства Windows позволяют выгрузить её, поэтому библиотека и называется динамической . Её загрузка, и выгрузка в данном случае происходят в реальном времени в зависимости от необходимости, и не нуждаются в контроле со стороны пользователя.
Теперь главное не ошибиться с выбором мастера (wizard). Тут варианты практически взаимоисключающие, но язык C++ (читается - си плас плас) имеет дополнительные особенности. В частности это касается библиотек MFC (Microsoft Foundation Classes). Впрочем, не стоит пока забивать этим голову. В некотором смысле этот набор классов может быть очень полезен, так как позволяет заглянуть в его код, однако пока он нам не нужен. Предположим нам необходимо создать Desktop Application, значит разумнее всего использовать мастер создания проекта Windows Application для обычных приложений или мастер DirectX 9 для работы с графическим ускорителем.
Допустим, что мы не хотим создавать нечто запредельное, и готовы удовлетвориться обычным оконным приложением. Создав приложение рабочего стола при помощи мастеров Windows Application, которые существуют для всех языков входящих в систему Visual Studio.NET, мы получаем одно приложение и одну форму окна для этого приложения. Почувствуйте разницу, так как приложение Windows будет им оставаться и без формы, а вот сама форма этим похвастаться не может. В приложении может быть много объектов формы, автоматически формирующих окна, но уж ни как не наоборот. Не зря же мы запускаем в функции Main метод Application.Run с именем формы, хотя могли бы сделать всё что угодно. Иными словами приложение Windows , даже без главного окна остаётся им. Впрочем, для пользователя чаще всего разделения чисто умозрительное, так как можно проследить способы взаимодействия программы с операционной системой, но вот увидеть, как это происходит в реалии, пожалуй, мог бы позволить только абсолютный эмулятор работы компьютера со специально встроенными для этого возможностями.
Создав проект, мы сможем приступить к интересующей нас задаче. Теперь нашей главной целью станет наращивание кода , в частности это можно делать при помощи встроенных средств системы разработки. Уточняю, что даже когда мы работаем с формой, используя не вид кода (View Code), а вид оформления (View Designer), мы все равно изменяем код. Кроме файлов существующих в проекте, имеются и другие, которые хранят метаданные и не видны нам ни во вкладке Solution Explorer или Class View . Это потому, что показ самих этих вкладок возможен только благодаря этим файлам. К примеру, файл решения имеет расширение sln , для проектов на каждый язык оно своё. Это сделано для того, чтобы вы не спутали файлы принадлежности проектов к конкретным языкам. И хотя, внутри у них всё написано в удобочитаемом стиле XML, я всё-таки не рекомендую пытаться изменять там что-либо вручную, не используя встроенную среду разработки .NET . То есть смотреть файлы метаданных можно, а изменять нет.
Мастер проекта мы выбрали исходя из наших потребностей, теперь настало время выбрать используемые библиотеки . Подобное можно осуществить, отталкиваясь от обратного, а именно, чётко представив желаемую цель. Конечно, тут возникает спорный вопрос, что является обратным, цель или способ её осуществления. С другой стороны очень многое зависит от способа восприятия действительности . Так как одну и ту же систему, разные люди могут понимать совершенно по иному. Человек не способен одновременно удерживать в голове все составляющие действий необходимых для программирования , следовательно, напрашивается необходимость разделить и упорядочить накопленные знания . К примеру, это можно осуществить следующим образом:
- Знание грамматических конструкций языка. По существу, это те правила, по которым вы набираете код. Нарушите хоть одно, и компилятор (составитель) выдаст ошибку. Вы должны научиться не только их понимать, но и применять на практике.
- Наиболее оптимальные методы работы с алгоритмами. Это то, что вырабатывается умными книжками и огромным количеством практики. Редко, когда бывает без разницы, каким способ написания кода воспользоваться. Часто люди упускают нечто не обязательное, но то, что может повысить общую скорость кода и его надёжность.
- Навык пользования стандартными библиотеками. Запомните одну истину, алгоритмы, написанные в стандартных библиотеках, зачастую являются более надёжными, чем те, что составляете вы. А значит необходимо помнить не только способы работы с ними, но и держать в уме примерный ассоциированный список того, что вам может понадобиться.
- Конечная цель решения. Чтобы получить желаемую программу, нужно точно представлять, чего вы хотите добиться. А это в свою очередь возможно только в том случае, когда вы знаете, какими средствами располагаете. Для лучшего понимания, представьте себе две пространственные точки, одна постановка задачи, другая завершение написания программы. Между ними идёт извивающаяся кривая, это ваше внутреннее предвидение совершаемых действий, то есть то, что вы будете использовать для достижения цели. От этой кривой по всей протяжённости отходят отростки, это побочные операции, которые возникают в процессе производства программы. Вы ведь не будете думать, к примеру, о правильном размере окна, пока не возникнет необходимость. Или о том, что можно написать список, а можно набор радио кнопок. Если не вдаваться в подробности, то во время кодирования программы, вам будет необходимо чётко видеть конечную цель. В противном случае проект может оказаться не завершённым. То есть, если нужно конкретное окно, то не откладывайте, а создайте его, даже если не знаете, какой в неё будет вложен код, так как он может оказаться лишь побочным ответвлением, а не главным стержнем программы. Такой способ проектирования часто именуют созданием прототипов.
Рассуждения, о способах проектирования и кодирования программ будут рассмотрены в следующих выпусках.
Вопросы и ответы |
k |
|
Практическая работа с Visual Studio.Net и Microsoft Office | ||
|
В избранное | ||