Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Изучаем Windows Forms и таблицы.


➲перейти к началу ➲перейти к концу
Практическая работа с Visual Studio.Net и Microsoft Office

Оглавление

➲Краткие сведения об этой рассылке
➲Практическая работа с Visual Studio.Net
➲Практическая работа с Microsoft Office
➲Web-технология
➲Создание реальных проектов
➲Вопросы и ответы

Краткие сведения об этой рассылке

Статистика
Номер выпуска рассылки 4
Дата выпуска рассылки 2006-03-06
Время выпуска рассылки 02:05:41
Возраст рассылки в днях 30
Количество подписчиков 693
Динамика подписчиков за вчера +30
Динамика подписчиков за неделю +618

Мои ресурсы

Рассылки Subscribe.Ru
Практическая работа с Visual Studio.Net и Microsoft Office
Обсуждение VS.Net 2003, MSOffice 2003

Дружественные ресурсы

Рассылки Subscribe.Ru
Visual Basic для новичков и профессионалов


Для обсуждения программирования и связи со мною создан лист обсуждений Обсуждение VS.Net 2003, MSOffice 2003. Подписывайтесь на него и задавайте интересующие вас вопросы. Так же можно вносить предложение по следующей теме рассылки Практическая работа с Visual Studio.Net и Microsoft Office. И, конечно же, просто обсуждать программирование в средах Visual Studio.Net и Microsoft Office.

Чтобы подписаться на интересующую вас рассылку воспользуйтесь формой быстрой подписки находящейся в начале этого документа. Достаточно набрать свой e-mail адрес, выбрать заинтересовавшие вас темы галочками и нажать кнопку ok. Потом вы должны подключиться к сети, если находитесь вне её. Далее действуйте по обстоятельствам.

➲перейти к оглавлению

Практическая работа с Visual Studio.Net

Формы и приложения.

Любое интерактивное приложение должно иметь как минимум одно окно, через которое предоставляется пользовательский интерфейс. В разных системах существуют различные способы добиться желаемого, к примеру, в Microsoft Access , кроме встроенных элементов можно добавлять ActiveX составляющие, а в Microsoft Word плюс к этому существует возможность использовать web-формы. Visual Studio.NET ничуть не уступает этим системам, а напротив, даже превосходит их. Как известно, эта среда разработки содержит библиотеки Net Framework, а уже в них появляется возможность использовать классы, находящиеся под общим пространством имён Windows Forms. Все такие высокоуровневые приложения Windows предоставлены объектами, чей тип извлекается из класса Form. Для них, кстати, существуют специальные мастера создания на каждый язык по одной штуке. Как с любым пользовательским интерфейсом, класс Form наследуется от класса Control. Подобное наследование добавляет признаки окон, такие, как управление границами окон и взаимодействие с панелью задач Windows. Все приложения Windows Forms имеют как минимум одни класс, извлечённый из Form. Если вы не поняли, о чём я говорю, то приведу пример ещё нескольких видов приложений: Console Application, MFC Application (только для Visual C++), Windows Control Library, Windows Service (те самые службы работающие в фоновом режиме) и так далее. Для создания же проекта с Windows Form вам потребуется мастер Windows Application. Тип приложения на начальной стадии разработки определяется мастером создания проекта, однако если вы достаточно продвинуты, то сможете превратить любой проект в нужный вам тип, хотя это будет иметь мало смысла, по причине лишней траты времени на замену метаданных, создания файлов и многого другого.

Чтобы лучше понять механизм наследования форм, приведу следующий пример для графического элемента RichTextBox:

  1. System.Object
  2.  System.MarshalByRefObject
  3.    System.ComponentModel.Component
  4.      System.Windows.Forms.Control
  5.        System.Windows.Forms.TextBoxBase
  6.           System.Windows.Forms.RichTextBox

Вам нужно, прежде всего, понять и запомнить, что в проектах Windows Forms существует зависимость между формами и элементами, содержащимися в них, а так же зависимость между самими формами. Пользовательский интерфейс будет стартовать с одной формы окна называемой главной, а другие наследованные могут вызываться потом, по мере необходимости.

Структура приложения.

Все приложения Windows Forms имеют, что-либо общее, ни смотря, ни на что, они или создаются в Visual Studio.NET или пишутся вручную.

  • Все они имеют как минимум одну форму, главное окно приложения.
  • Все они нуждаются в отображении, когда запускается форма.
  • Они должны правильно завершиться в подходящее время.

Загрузка и закрытие.

Все программы где-нибудь, да начинаются, и приложения .NET имеют особый метод, который вызывается, когда приложение запущено. Этот метод ответственен за создание любого приложения Windows и необходим для предустановок. В Visual C#.NET и Visual Basic.NET эта точка вхождения в программу всегда вызывается статичным (static) методом Main. По умолчанию мастер Windows Application в Visual Studio всегда закладывает эту функцию в форму нового проекта.

Á

Visual

C#

NET

[STAThread]

static void Main()

{

    Application.Run(new Form1());

}

Данный код вы увидите, создав проект с помощью мастера Windows Application и войдя в код формы.

Хотя Visual Studio делает Main видимой если в используете Visual С# (Си Шарп), однако при разработке в Visual Basic эта функция будет сокрыта. В проектах Visual Basic код для Main не отображается в коде формы, ни в списках Class View или в Object Browser . Что и не удивительно, раз функции в редактируемом коде не существует. Однако, рассматривая составленное (откомпилированное) приложение Windows Forms используя ~ILDASM,  .NET разборщик (дизассембер), показывает, что сокрытый public метод названный Main присутствует в форме приложения.

L

Приложение ~ILDASM можно найти по адресу Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin. Просто запустите его, а потом найдите в папке своего проекта папку bin. В ней будет содержаться текущий откомпилированный пример. Если вам не охота каждый раз искать эту программу воспользуйтесь вкладкой в строке меню Tools⇒External Tools.... Открывшееся диалоговое окно позволит вам добавить ссылку во вкладку Tools на этот инструмент.

А вот примеры Main для других языков Visual Studio.Net.

Á

Visual

Java

NET

/** @attribute System.STAThread() */

public static void main(String[] args)

{

    Application.Run(new Form1());

}

Á

Visual

C++

NET

int APIENTRY _tWinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPTSTR lpCmdLine,

int nCmdShow)

{

    System::Threading::Thread::CurrentTh read->ApartmentState = System::Threading::ApartmentState::STA;

    Application::Run(new Form1());

    return 0;

}

Вы, возможно, подумали, что Visual Basic обделён по сравнению с другими языками, но это не так. Если вам всё-таки нужна эта функция или процедура в нём, то вставьте следующий код в конец класса формы, сразу перед End Class.

Á

Visual

Basic

NET

<STAThread()> Public Shared Sub Main()

    Application.Run(New Form1)

End Sub

Если ваше приложение нуждается в параметрах командной строки, вы можете изменить Main, или если ваш код Visual Basic, то добавить вашу собственную процедуру, так как иногда это предпочтительнее, чем полагаться на автодобавление компилятором. Используйте в параметрах тип string. Конкретная реализация зависит от языка программирования. Вы так же можете передать массив строк по одному, на каждый аргумент, или возвратить значение целого типа при выходе из кода. Вот пара примеров:

Á

Visual

C#

NET

[STAThread]

static int Main(string[] args)

{

    Application.Run(new Form1( ));

}

Á

Visual

Basic

NET

<STAThread> _

Public Shared Function Main(args As String( )) As Integer

    Application.Run(New Form1( ))

End Sub

ë

Возможно, вы захотите восстановить аргументы командной строки во время работы программы. Этого можно добиться, вызвав метод GetCommandLineArgs класса Environment. Такое использование гораздо проще, так как этот метод можно вызвать в любой части вашей программы, не только в Main. Это так же означает, что вам не будет необходимости вводить метод Main в Visual Basic, то есть по большому счёту вы не будете нуждаться в его определении.

Функция Main в большинстве приложений имеет наипростейший вид, так как наиболее интересные предустановки происходят внутри форм. Всё, что обычно случается в Main, это создание образца формы (Form1) и передача управления в класс приложения Application библиотек framework, который управляет исполнением до конца жизни приложения. Приложение работает, пока класс Application не решает, что время работы истекло. По умолчанию, это происходит, когда форма закрывается.

Но не стоит думать, что подобное поведение характерно только для этого класса. Вы можете запустить любое другое диалоговое окно, и получите такое же поведение. К примеру, добавьте перед закрытием приложения сообщение о том, что окно сейчас откроется, и после него, что оно закроется.

Á

Visual

Basic

NET

<STAThread()> Public Shared Sub Main()

    MsgBox("Окно открывается")

    Application.Run(New Form1)

    MsgBox("Окно закрывается")

End Sub

Вот видите, пока не закроется окно сообщений, нельзя открыть другое окно формы. Так было в начале, и так дело обстояло в конце. То есть мы на примере убедились, что так ведёт себя последовательный код разных форм. Одно не запустится, пока другое не закроется. В будущем я познакомлю вас с наследованием и параллельным запуском форм.

➲перейти к оглавлению

Практическая работа с Microsoft Office

Информация для полных новичков Access.

Больше всего в программировании под Microsoft Office нуждается релятивная база данных Access. То есть, для работы с другими программными продуктами в большинстве случаев хватает пользовательских навыков. Но для Access это будет не приемлемо, ведь без программирования, там можно составлять лишь простейшие таблицы, имитирующие последовательную структуру данных, одним словом списки. В связи с этим, я настоятельно рекомендую прочесть всю русскоязычную справку. Англоязычные же документы касаются в основном описания программирования под Visual Basic 6.3 и справочную систему по различным вспомогательным библиотекам, таких как Access, DAO или ADO. Вот их то я и буду чаще всего обсуждать, так как большинству из вас будет не интересно слушать пространные рассуждения о том, как создавать таблицы не программными методами, когда всё это и многое другое написано по-русски и с приятными иллюстрациями в справке. Так же иногда я буду касаться программирования других в других программных продуктах Microsoft Office, но тоже преимущественно программирования. А теперь откройте справку Microsoft Office 2003 (2002) и прочтите все разделы, написанные русским языком, их будет отличать от английских - русское название.

Окно базы данных Access.

Для работы с объектами базы данных очень удобно использовать окно базы данных. Оно позволяет обращаться к объектам, не используя программные методы. То есть обычному пользователю не нужно мучаться, пытаясь извлечь нужные ему данные. Такой способ доступа к содержащейся в базе информации очень удобен.

¨

окно базы данных

Окно, которое открывается при открытии базы данных Microsoft Access или проекта Microsoft Access. В окне базы данных выводятся ярлыки для создания новых объектов базы данных и открытия существующих объектов.

¨

объекты базы данных

База данных Microsoft Access может содержать таблицы, запросы, формы, отчеты, страницы доступа к данным, макросы и модули. Проект Microsoft Access может содержать такие объекты как формы, отчеты, страницы макросы и модули.

Теперь создайте базу данных с любым именем, в любой папке, и вообще любым понравившимся вам способом. Если база данных всё ещё закрыта, откройте её.

ë

В строке заголовка окна базы данных вы можете видеть, какой формат приняла ваша база данных. У меня это формат Access 2002-2003 . Если же вы получили другой формат, а в частности 2000 , то можете исправить это недоразумения, воспользовавшись вкладкой в строке меню Сервис⇒Служебные программы⇒Преобразовать базу данных⇒в формате Access : . По применении этой команды вам будет предложено ввести имя и путь новой базы данных, которая как раз и будет иметь нужный вам формат. Закройте текущую базу данных и откройте ту, которую вы только что создали. Теперь в строке заголовка будет находиться иное название формата.

В окне базы данных выберите вкладку Таблицы . Далее в панели инструментов окна базы данных нажмите кнопку создать. Привыкайте создавать таблицы в режиме конструктора, так как этот способ даёт вам полный контроль над свойствами таблицы. Напоминаю, что ваши действия в конечном итоге приведу к созданию объекта базы данных. После того, как вы нажмёте кнопку Ok , перед вами появится окно таблицы.

¨

окно таблицы

В базе данных Microsoft Access - окно, в котором пользователь работает с таблицами в режиме конструктора или в режиме таблицы.

В режиме конструктора вы сможете открывать такие наследованные окна как:

  • ¨

    окно свойств

    Окно, предназначенное для просмотра и изменения свойств таблиц, запросов, полей, форм, отчетов, страниц доступа к данным и элементов управления.

  • ¨

    окно "Индексы"

    Окно в базе данных Microsoft Access, предназначенное для просмотра и изменения индексов таблицы и для создания составных индексов, включающих несколько полей.

Плюс к этому вам стал доступен графический интерфейс самого окна таблицы, который поделён на две части, так называемую данных решётку (control Grid), для создания новых полей и в нижней части свойства каждого из них в отдельности.

Создайте одно поле с типом счётчика. Не важно если вы не знаете, как это сделать, в конечном итоге Access сам поможет вам в этом при записи таблицы. Назовите ключевое поле Код . Создайте другие поля, со всевозможными типами. Теперь сохраняйтесь и выходите из режима конструктора. Это можно сделать и в обратном порядке, то есть приказать окну таблицы выйти, а оно предложит сохраниться и ввести имя.

В окне базе данных выберите вкладку Формы. Теперь вы получаете возможность выбирать объекты базы данных с типом форма и создайте с помощью мастера форм, форму из созданной нами таблицы. Я думаю, у вас не возникнет с этим затруднений без моих доскональных объяснений. Запомните, что форма - это, прежде всего объект, а не то, что вы видите на экране, так как нужно чётко понимать, с чем вы имеете дело, когда программируете. К примеру, вы можете выполнить любую команду , которую можно выбрать, используя строку меню Access, значит, их можно отнести к командам Access, или параметры в диалоговом окне параметры, являются, прежде всего, параметрами, а не как ни объектами или командами. То есть вы должны условно разделить методы воздействия на базу данных в группы, и пользоваться приобретёнными знаниями, когда начнёте программировать. Для чего это нужно? Прежде всего, чтобы по прошествии месяцев бездействия, всё ещё помнить, как программировать в Access.

Существуют разные типы программистов. В ранних выпусках я условно делил их на практиков и теоретиков. Но это не даёт общей картины эффективности тех или иных. С моей точки зрения программировать тоже можно по-разному. Одни это делают стихийно, целиком полагаясь на свой разум, способность мгновенно извлекать нужную им информацию. Вот только людей имеющих для этого необходимую структуру мозга единицы из тысяч. То есть не каждый человек способен автоматически, без участия осмысленного сознания упорядочивать свои знания. А остальным стихийным программистам остаётся только посочувствовать, так как на решение каждой задачи они будут тратить огромное количество времени, которое будет измеряться не минутами и часами, а днями и месяцами. Встречаются и особо запущенные случаи, где счёт может идти на года. В противовес им существуют люди, сознательно тренирующие свою наблюдательность и память. Вот вы читаете этот текст, но много ли из него запомнили? Тогда скажите, как называется функция для извлечения параметров командной строки в Visual Studio.Net. Не помните? А как называется класс, к которому она принадлежит? Читая про функции Main, запомнили ли вы, как они записываются на каждом конкретном языке? В чём грамматическое отличие между определениями функций на различных языках. Если на все вопросы вы ответили отрицательно, признав тем самым, что не может ничего вспомнить, то значит, читали текст не задумываясь, как любой типичный стихийник. Не ищите себе оправдание, дескать, зачем мне забивать голову всякой ерундой, якобы, когда придёт время, то можно просто посмотреть ответ в MSDN . Вот в этом всё и дело, не зная, хотя бы примерно, что ищешь, этого не найдёшь. А, не зная, что какая-либо возможность существует, вы просто не сможете её использовать.

Зачем я пишу всё это, вместо того, чтобы зарядить в эту рубрику какой-нибудь огромный код , чтобы все видели, что это рассылка учит его написанию? Тут дело, прежде всего в том, что, сколько бы кода я не вставил в рассылку, написав сам или найдя где-нибудь, это не будет иметь никакого значения. Почему? Да по тому, что даже если вы всё поймёте, то со временем это все равно забудется. Вот, к примеру, я из тех людей, которые не понимают код, лишь взглянув на него. То есть, у меня нет врождённой способности к самоупорядочиванию сознанием знаний. Конечно, можно попытаться взять код не умением, а упорством, но время все равно расставит всё по своим местам. Может случиться даже так, что вы довольно успешно запрограммировав базу данных пару месяцев назад, в последствии будете удивляться, как же вам такое удалось, ведь сейчас в вашем сознании огромное чёрное пятно не позволяющее получить точную последовательность действий для нового свершения. В итоге получается следующий вывод, человек, который пользуется только мгновенно извлекаемыми знаниями, в конечном итоге может лишиться их всех. Как известно у взрослого с годами мозг начинает работать не лучше, а напротив, намного хуже. Чем не повод, чтобы попытаться упорядочить свои неосознанные знания , пока не стало слишком поздно.

Вероятно, некоторые заядлые программисты, да и не только они, замечали, что, работая с компьютером на пределе засыпания, восприятие коренным образом меняется. Думать образами становится не в пример проще, для программиста это очень важно. Но все ли замечали, что теряют другую важную составляющую, а именно, ту самую чёрную дыру, которая вам так мешает. Вообще то никакой чёрной дыры нет, но надо же мне как-то обозвать свойство человеческого мозга вспоминать образы, и я не виноват, что мне чаще всего представляется перед внутренним взором пустое чёрное пространство. Короче, когда ваш мозг от недосыпа начинает глючить, вы из стихийника слова превращаетесь в стихийника образника , теряя при этом способность извлекать слова без участия образов. Так же, сразу после просыпания, и если вы выспались, у вас должен настать пик словесного мышления и самый сильный спад образного. Конечно, понятно, что все эти состояния регулирует жидкости в мозгу, которые за время бодрствования сгорают, а за время сна накапливаются. Но, не смотря на это, упорядочивания и быстрое извлечение знаний можно добиться, применяя лишь усилие воли, и меньше полагаясь на своё настроение, которое тоже формируется этими пресловутыми жидкостями.

Сейчас я, наконец-то подвёл к самому главному и имя ему научный метод. Многие из вас посмеются, очевидно, решив, что научный метод это когда бьют кулаком по телевизору, чтобы он заработал. Другие, возможно, думают, что научный метод, это метод проб и ошибок, но это не так, иначе метод назывался бы не научным, а опытным (в английском - экспериментальный). Что же в таком случае можно считать научным методом. Научный метод - это прежде всего жёсткое упорядочивание достоверных фактов. Вот тут многие люди делают две серьёзные ошибки. Они или берут достоверные факты и не правильно их упорядочивают, или начинают упорядочивать, давая каждому понятию другое название, как будь-то оттого, что слон будет назван элефантом, улучшится понимания сути предмета. Возьмём, к примеру, механику. Ну, спрашивается, зачем было назвать веретено - шпинделем (от англ. spindle - веретено)? И таким маразмом страдает большинство серьёзной литературы. Выходит русскоязычному человеку нужно запоминать как минимум в два раза больше, чем тому же англоязычному. В программировании дело обстоит ещё хуже.

Сейчас мы изучаем базу данных Access, так вот, эту программу не поленились перевести, и что же мы видим? Если вы выполняли действия, которые я описал, то сейчас находитесь в окне форм (самостоятельно найдите в справке описание термина окна форм). Откройте свойства формы, там пять вкладок Макет, Данные, События, Другие и Все. Кстати, название этих вкладок я написал по памяти. Тут дело в том, что я не поленился запомнить название окна - Свойства Формы, а далее упорядочил их, то есть первые четыре содержат разные свойства, а пятая это сумма предыдущих. Рекомендую вам проделать ту же операцию, чтобы при вопросе, а какие вкладки существуют в окне Свойства Формы, вы сразу знали ответ. Причём не нужно зубрить название, необходимо понять для чего нужна каждая категория, и осмыслив это, извлекать из памяти не название, а предназначение, а уж потом по нему находить само название. В окне свойств формы мы видим русские название слева от каждого поля свойств. Если же нам придёт в голову программировать, то названия в коде придётся набирать английскими словами, так как русские названия это всего лишь подписи, а не члены библиотеки Access. Вот и скажите мне, хорошо потрудились переводчики? До обновления будет выглядеть как BeforeUpdate. Однако это не так уж и плохо, так как на ряду с этим существует возможность получать русифицированную справку, а не только её англоязычное подобие.

На сегодня всё, и хоть в этом выпуске мы и не программировали, но получили общее представление об Access, попутно создав таблицу и связав её с помощью мастера форм с новой формой.

➲перейти к оглавлению

Web-технология

Пример от DirectAnimation.

Хотя DirectAnimation уже устарела, и в версии DirectX9 вместо неё, а так же DirectDraw и Direct3D, теперь используется DirectX Graphics, однако я пока не стану сбрасывать эту библиотеку со счетов. Вот краткий пример, позволяющей оценить возможности DHTML и VBScriptзапустить пример.

Если пример не запускается в Internet Explorer, то не забудьте разблокировать его содержимое. Не волнуйтесь, в нём отсутствуют макровирусы.

Внимательно просмотрите код файла, его можно найти в файле clock.html прикреплённого к письму. Обратите внимание, как похож VBScript на Visual Basic шестой серии. Таким образом, знающему человеку не составит большого труда преобразовать этот код в Visual Basic 6.3 для использования в программных продуктах Microsoft Office. В будущих выпусках я расскажу вам, как модифицировать Microsoft Word, чтобы он умел читать выбранный вами текст. Причём же тут Web? Дело в том, что пример будет мной преобразован из кода VBScript.

➲перейти к оглавлению

Создание реальных проектов

Оправдание всегда найдётся.

Пока к моему великому сожалению я не могу предложить вам ничего стоящего.

    Оправдания автора рассылки:
  • Рассылка ещё слишком молода.
  • Мы ещё не проходили ни совместную работу с Access, ни программирование под DirectX9.
  • Реальные проекты заработают сразу после прохождения темы Windows Forms.

➲перейти к оглавлению

Вопросы и ответы

k

Как со мной связаться? Честно говоря я ещё не решил, какой способ связи будет для меня и для вас оптимальным. Пока вы можете использовать мой лист обсуждений по текущей теме. Подпишитесь на него, и пишите туда вопросы, пожелания, задумки и так далее. Премодерации пока нет, так что думайте о том, что будете публиковать. Хотя я пока и не могу гарантировать успешной работы этого листа, однако хуже от него точно не будет.

Я только что подписался!!! как мне получить предыдущие выпуски вашей рассылки, заказав их по почте?

Ó Для начала пошлите текстовое письмо по адресу subscribe@subscribe.ru. Ни в коем случае не пытайтесь отправить письмо в формате HTML, робот subscribe просто не станет его рассматривать. Заполните содержание следующей строкой ARCHIVE comp.soft.prog.vsnetmsoffice 2006 02. Тему можно игнорировать.

Ò Если вы всё сделали правильно, то через некоторое время вам придёт список предыдущих выпусков рассылки. Теперь повторите операцию с письмом, но используйте элементы из списка выпусков. Отправьте письмо и ждите ваш заказ. Не пытайтесь получить почту, пока не пройдёт хотя бы одна минута. Это время на обработку заказа.

Не забывайте рассылка новая, а первые выпуски были опытом и не заслуживают особого внимания. Подобным методом вы можете получать не только мою рассылку, но и любую другую, изменив её код.

➲перейти к оглавлению

Практическая работа с Visual Studio.Net и Microsoft Office
➲перейти к началу ➲перейти к концу

В избранное