МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Методика проектирования меню и инструментальной панели





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

В Delphi меню создаются компонентами MainMenu— главное меню, и PopupMenu— всплывающее меню. Оба компонента расположены на странице Standard. Ниже рассмотрены основные этапы разработки полноценного меню.

1. Создайте новый проект и откройте главную форму будущего приложения.

2. Перенесите на форму компонент ImageList— список изобра­жений для команд меню и кнопок инструментальной панели (страница Win 32).

3. С помощью редактора списка изображений (рис. 4), вызываемого двойным щелчком на ImageList,заполните список изображениями, символизирующими основные команды и кнопки панели инструментов будущего меню.

Рис. 4

Изображение добавляется в список нажатием кнопки Add и последующим выбором файла изображения. С Delphi поставляется много изображений кнопок. Они располо­жены в каталоге \Images\Buttons, а сам каталог Images расположен в каталоге \program files\common files\borland shared. Размер всех изображений в списке должен быть одинаковым. При добавлении в список изображений для кнопок необходимо учесть, что они часто со­держат не одно, а два и более изображений. В этих случаях при попытке добавить изображение задается вопрос: «Bitmap dimensions for ... are greater then imagelist dimensions. Separate into ... separate bitmaps?» (Размерность изображения ... больше раз­мерности списка. Разделить на ... отдельные битовые матри­цы?). На заданный вопрос надо отвечать положительно. Тогда загружаемая битовая матрица автоматически разделится на отдельные изображения и потом можно удалить те из них, которые не нужны, кнопкой Delete.

При выборе изображений можно ориентироваться по именам соответствующих файлов и пиктограммам, которые показываются в правой части окна выбора: Find.bmp – файл кнопки поиска, Font.bmp – файл кнопки выбора шрифта и т.д.

4. Перенесите на форму со страницы Dialogs компоненты стандартных диалогов типа «Открыть файл» (компонент OpenDialog),«Сохранить файл как» (компонент SaveDialog), «Шрифт» (компонент FontDialog)и другие компоненты, с которыми будут выполняться операции в разрабатываемом приложении. Разместите на форме компонент RichEdit (страница Win32) многострочного окна редактирования и компонент MainMenu (главное меню) со страницы Standard.

5. Свяжите компонент MainMenu со списком изображений, полученным в п. 3, установив для компонента MainMenu свойство Images равным ImageList1 — имени компонента ImageList. Вызовите редактор меню (рис. 5), сделав двойной щелчок на MainMenu. В пунктирной рамке задайте заголовок первого пункта меню, в соседней рамке — второго и т.п. Для этого после щелчка по рамке следует перейти в Инспектор Объектов и в нем задать значение свойства Caption как имя пункта меню.

Щелкнув на заголовке одного из пунктов меню, вы получите доступ к вводу команд данного пункта. Выделите очередную пунктирную рамку в списке команд пункта и в Инспекторе Объектов задайте имя команды как значение свойства Caption. Повторите те же действия для других команд и пунктов.

Рис. 5 Рис. 6

Для удаления названий команд или пунктов меню можно использовать команду Delete контекстного меню (рис. 6), которое открывается на выделенном пункте меню или на строке с названием команды.

В названиях пунктов меню или команд можно указать символ «&» перед тем символом, который определит клавиши быстрого выбора пункта или команды. Напри­мер, на рис. 5 показан пункт Файл, который можно выбрать сочетанием клавиш Alt+Ф. При создании меню имя этого пункта в строке Caption Инспектора Объектов была таким: &Файл.



Если нужно вставить разделительную черту, отделяющую группы команд друг от друга, следует очередной элемент меню ввести с именем «-».

Для задания «горячих клавиш» командам меню в Инспекторе Объектов назначается одно из значений свойства ShortCut.

Для создания разветвленных меню, т.е. таких, у которых подпункты вызывают новые списки команд, следует щелкнуть по названию подпункта и нажать комбинацию клавиш Ctrl+Bnpaвo, где Вправо - клавиша смешения курсора вправо. Такого же эффекта можно добиться после щелчка правой кнопкой мыши на подпункте и выбора команды Create Submenu из открывшегося контекстного меню (рис. 6).

Для элемента меню определено единственное событие ОпСliск, которое возникает при щелчке по названию команды или при нажатии Enter, если в этот момент строка с данной командой была выбрана (подсвечена). Обработчик события становится доступен после двойного щелчка по строке с названием команды в окне конструктора меню.

6. Рассмотрим процедуру создания панели инструментов для приложения. Установите на форму компонент ControlBar с вкладки Additional,и измените его свойство Align на alTop, чтобы растянуть компонент вдоль верхней кромки окна, а свойству AutoSize задайте значение true.

Компонент ControlBarцелесообразно использовать потому, что на нем удобно располагать панели инструментов. Они автоматически становятся перемещаемыми внутри ControlBar. Это значит, что панели можно будет двигать по своему усмот­рению. Если свойство AutoSize равно true, то компонент будет авто­матически растягиваться и сужаться, когда возникнет необходимость выстраивать все пане­ли в одну строку или в столбик.

Установите на компонент ControlBarодну панель ToolBar с вкладки Win32иизмените его свойство EdgeBorders. Для этого дважды щелкните левой кнопкой мыши по свойству EdgeBorders и задайте свойству еbТор значение false. Это заставит исчезнуть оборку сверху панели.

Желательно также сразу изменить здесь и свойство AutoSize на true, чтобы панель принимала размеры, соответствующие кнопкам.

Для создания кнопки на панели щелкните по ней правой кнопкой мыши и выберите из появившегося контекстного меню (рис. 7) пункт New Button.

Рис. 7

Пункт New Separatorэтого же меню создает разделитель между кнопками. Если нужно удалить кнопку или разделитель, то после их выделения на клавиатуре нажимается клавиша <Del>. Чтобы кнопки на панели выглядели более изящно (плоско), выделите панель и измените свойство Flat на true.

Для того чтобы нанести на кнопки какие-либо изображения, следует выделить панель и связать ее со списком изображений, полученным в п. 3, установив для панели свойство Images равным ImageList1. На кнопках сразу же отобразятся картинки в той последовательности, в ко­торой они добавлялись в список рис.4. Если нужно изменить картинку на какой-нибудь кнопке, надо выделить ее и изменить свойство ImageIndex.

Для каждой кнопки в свойстве Caption следует ввести название кнопки - осмысленный текст, который бы по возможности соответствовал изображению на картинке. Чтобы панель отображала на кнопках не только картинки, но и их названия, нужно установить значение true в свойстве ShowCaptions у панели инструментов. Если еще установить свойство List у панели инструментов, то текст будет ото­бражаться справа от картинки.

Для создания обработчика события для какой-нибудь из кнопок выполняется двойной щелчок по изображению кнопки и в открывшемся окне редактора вводится текст процедуры.

7. Если необходимо обеспечить в приложении контекстные всплывающие меню, то на форму нужно перенести один или неско­лько (по числу различных контекстных меню) компонентов PopupMenuсо страницы Standard. Свяжите их с компонентом ImageList,задав соответствующее значение для свойства Images.Затемдвойным щелчком на PopupMenuнужно открыть тот же редактор меню, что и в случае MainMenu.Команды контекстного меню проектируются точно так же, как и команды глав­ного меню.

Когда контекстное меню сформировано, для привязки его к необходимому компоненту этот компонент выделяется на форме и в Инспекторе Объектов его свойство PopupMenu задается равным имени компонента соответствующего PopupMenu.

8. Созданное меню можно сохранить как шаблон для использования в других приложениях. Для этого в редакторе меню следует выбрать из контекстного меню (рис.6) команду Save As Template. Эта команда вызывает диалоговое окно, представленное на рис. 8.

Рис. 8

В этом окне в верхней строке можно указать описание (заголовок), под которым будет сохраняться новое меню. Впоследствии в любом другом приложении можно загрузить этот шаблон в меню, выбирая из контекстного меню в окне конструктора меню команду Insert From Template. Для удаления не используемых в данном приложении команд или пунктов меню они выделяются и нажимается клавиша Del.

Модальные формы

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

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

Модальной может быть сделана любая форма, если она делает­ся видимой методом ShowModal. Если та же самая форма делает­ся видимой методом Show, то она не будет модальной.

Методы Show и ShowModal можно применять только к неви­димой в данный момент форме. Если нет уверенности, что форма в данный момент видима, то прежде чем применять эти методы, следует проверить свойство Visible формы. Например:

if (not Form2.Visible) then Form2.ShowModal;

При выполнении методов Show или ShowModal возникает со­бытие формы onShow. Это событие возникает до того момента, как форма действительно станет видимой. Поэтому обработку события onShow можно использовать для настройки каких-либо компонентов открываемой формы. При этом в настройке можно использовать какую-то оперативную информа­цию, возникающую в процессе выполнения приложения.

Методом Hide форму в любой момент можно сделать невиди­мой. В этот момент в ней возникает событие onHide.

Необходимо помнить, что для выполнения методов CreateForm, Show, ShowModal, Hide и вообще для обмена любой ин­формацией между формами модули соответствующих форм дол­жны использовать друг друга. Например, если форма в модуле Unit1 должна управлять формой в модуле Unit2, то в оператор uses модуля Unit1 должно быть включено имя второго модуля Unit2. А если к тому же форма в модуле Unit2 должна пользова­ться какой-то информацией, содержащейся в модуле Unit1, то в оператор uses модуля Unit2 должно быть включено имя первого модуля Unit1. В этом случае, если операторы uses в обоих моду­лях расположены в разделах interface, возникнут проблемы с не­допустимыми круговыми ссылками и компи­лятор выдаст соответствующую ошибку. От недопустимых круго­вых ссылок можно избавиться, если разомкнуть их, поместив один или оба оператора uses в раздел implementation. Можно также не включать имена модулей приложения в операторы uses вручную, а использовать команду File | Use Unit, которая автомати­зирует этот процесс и гарантирует отсутствие круговых ссылок.

Закрыть форму можно методом Close. При этом в закрываю­щейся форме возникает последовательность событий, которые можно обрабатывать. Их назначение — проверить возможность закрытия формы и указать, что именно подразумевается под за­крытием формы. Проверка возможности закрытия формы необ­ходима, например, для того, чтобы проанализировать, сохранил ли пользователь документ, с которым он работал в данной форме и который изменял. Если не сохранил, приложение должно спро­сить его о необходимости сохранения и, в зависимости от ответа пользователя, сохранить документ, закрыть приложение без со­хранения или вообще отменить закрытие.

Поведение модальной формы определяется ее основным свой­ством ModalResult. Это свойство доступно только во время вы­полнения приложения. При открытии формы методом ShowModal сначала значение свойства ModalResult равно нулю. Как только при обработке каких-то событий на форме свойству ModalResult будет присвоено положительное значение от 1 до 8, модальная форма закроется. При этом значение ее свойства ModalResult можно будет прочитать как результат, возвращаемый методом ShowModal. Таким образом, программа, вызвавшая модальную форму, может узнать, что сделал пользователь, работая с этой формой, напри­мер, по какой кнопке он щелкнул. Требуемые значения ModalResult можно задавать в обработчиках соответствующих событий в компонентах модальной формы.

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

Помимо формы-заставки нередко в приложениях, особенно в тех, которые работают с базами данных, в начале работы приложения появляется форма с запросом пароля. При неверном пароле приложение закрывается, не позволяя пользователю работать с ним.

Формы-заставки и формы запроса пароля могут быть реализованы множеством различных способов. Один из них состоит в использовании модальных форм.

Рассмотрим последовательность действий при создании модальной формы-заставки.

1. Откройте в Delphi новое приложение (File | New Application). Пусть открывшаяся форма будет главной в приложе­нии (вместо такой пустой формы можно взять любое раз­работанное ранее приложение и добавлять форму-заставку и форму запроса пароля в него). Назовите для определенности главную форму приложения FMain.

2. Добавьте в приложение новую форму (File | New Form). Пусть это будет форма-заставка с именем FL.Ее свойство BorderStyleнадо сделать равным bsNone, что­бы в окне этой формы отсутствовала полоса заголовка. Можно поместить на форме какой-то рисунок (разместить ком­понент Imageи вставить в его свойстве Pictureжелаемое изображение), различные надписи и т.п. В простейшем случае можно поместить в центре формы метку Labelи сопроводить ее каким-либо текстом. Размер формы-заставки целесообразно задать небольшим, меньшим, чем обычные окна приложения. Свойство Positionследует сделать равным poScreenCenter,чтобы форма появлялась в центре эк­рана.

3. Напишите обработчики событий, которые при любом действии пользователя закрывали бы форму FL. Щелкните на форме, чтобы в Инспекторе Объектов открылись относящиеся к ней страницы (если форма накрыта панелями или ри­сунками, то, щелкнув на них, нажимайте клавишу Esc до тех пор, пока в Инспекторе Объектов не откроются страницы, относящиеся к форме). Перейдите в Инспекторе Объектов на страницы событий, выберите событие onKeyDownи напишите для него обработчик, состоящий из одного оператора — Close.Аналогичный обработчик напишите для события onMouseDown.Если на форме имеются метки, компоненты Imageи др., то выделите их все, задайте в событии onMouseDownссылку на тот же обработчик, что и для формы, а в форме поставьте свойство KeyPreviewв true,чтобы форма пе­рехватывала все связанные с нажатием клавиш события компонентов.

Теперь форма будет закрываться при нажатии пользователем любой клавиши или кнопки мыши.

4. Можно сделать так, чтобы и при отсутствии каких-то действий со стороны пользователя форма закрывалась сама, через заданный интервал времени, например 5 секунд.

С этой целью добавьте на форму компонент Timerсо страницы System. Это невизуальный компонент, который может отсчитывать интер­валы времени. Интервал задается в свойстве компонента Intervalв миллисекундах. Задайте его равным 5000. Единствен­ное событие таймера — OnTimer,наступающее по истечении заданного интервала времени. Напишите в обработчике этого события все тот же единственный оператор Close.

Теперь при любом действии и даже бездействии пользователя форма-заставка будет закрываться. По умолчанию это означает сделать ее невидимой. Однако форма-заставка не нужна после того, как она будет предъявлена пользователю в начальный момент выполнения приложения. Хранить все время в памяти эту уже ненужную форму не имеет смысла. Поэтому в форме надо предусмотреть, чтобы закрытие формы означало бы ее удаление из памяти и одновременное освобождение памяти. Для этого в событие формы-заставки OnCloseвставьте оператор:

Action:=caFree;

Этот оператор при­водит к уничтожению объекта формы и освобождению занимае­мой формой памяти.

5. Проверьте, имеет ли ее свойство Visibleзначение false.Это важно, посколь­ку только невидимую форму можно открыть методом ShowModal.В главной форме свойство Visibleтоже должно иметь значе­ние false.Сохраните проект, дав файлу модуля главной формы имя Umain,а файлу модуля формы-заставки имя FLog.

6. Чтобы сослаться в модуле Umainна модуль Flog, добавьте в оператор usesмодуля Umainимя модуля FLog,или напишите оператор uses FLogв разделе implementationмодуля Umain,или сделайте то же самое путем, выполнения команды File | Use Unit.

7. Напишите в модуле Umainобработчик события формы OnShow,состоящий из одного оператора:

FL.ShowModal;

Событие OnShowнаступает до того, как форма действительно станет видимой. Поэтому во время обработки этого события главная форма приложения еще не видна. Оператор открывает форму FLкак модальную, передает ей управление, и дальнейшее вы­полнение программы в модуле Umainостанавливается до тех пор, пока модальная форма не будет закрыта. После закрытия модальной формы выполнение программы продолжится и глав­ная форма станет видимой.

8. Сохраните проект, запустите приложение и проверьте его работу.

Рассмотрим процедуру разработки формы запроса пароля. Реаль­ная форма такого типа должна предлагать пользователю ввести свое имя и пароль, сравнивать введенные значения с образцами, хранящимися где-то в системе, при неправильном пароле давать возможность пользователю поправиться. Если пользователь так и не может ввести правильный пароль, форма должна закрыть приложение, не допустив к нему пользователя. При правильном пароле после закрытия формы запроса должна открыться главная форма приложения.

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

9. Добавьте к приложению новую форму. Назовите ее FPSW и сохраните ее модуль в файле с именем UPSW.Уменьшите размер формы до разумных пределов, поскольку она будет содержать всего одно окно редактирования. Установите свойст­во формы BorderStyleравным bsDialog,свойство Position-равным poScreenCenter.В свойстве Captionнапишите «Введите пароль и нажмите Enter». Эта надпись будет служить пригла­шением пользователю.

10. Поместите в центре формы окно редактирования Edit,в кото­ром пользователь будет вводить пароль. Очистите его свойство Text.В обработчике события OnKeyDownэтого компонента запишите оператор:

if (key = VK_RETURN) then

Begin

if FPSW.Edit1.Text = ‘aa’

then ModalResult := 6 else Close;

end;

Этот оператор выполняет следующее. Прежде всего, он анали­зирует нажатую клавишу. Если нажата клавиша Enter, то введенный текст сличается с паролем. В данном случае для упрощения непосредственно указан правильный пароль — символы 'аа'. Если введен правильный пароль, то свойству ModalResultприсваивается некоторое условное число — 6 (можно было бы выбрать и любое другое до­пустимое число, кроме 0 и 2). Если пароль неправильный, то вы­полняется метод Close.В обоих случаях форма закрывается, так как задание отличного от нуля положительного значения ModalResultравносильно закрытию формы. Но при правильном пароле значение ModalResultбудет равно 6, а при неправильном — 2. Это значение получается при выполнении метода Close или если пользователь нажмет кнопку системного меню в полосе заголовка окна.

11. Модуль главной формы Umainнужно дополнить операторами, показы­вающими пользователю форму пароля и анализирующими ответ поль­зователя. Для этого в модуле Umainв оператор uses нужно добавить ссылку на модуль UPSW,а в обработчике события OnShowпосле ранее введенного оператора FL.ShowModalдобавить оператор:

if (FPSW.ShowModal <> 6) then Close else

Begin

ShowMessage('Ваш пароль '’'+FPSW.Edit1.Text+'''');

FPSW.Free;

end;

Этот оператор анализирует значение свойства ModalResultформы запроса пароля. Значение этого свойства возвращает функция FPSW.ShowModal.Если результат не равен 6, то был вве­ден неправильный пароль. Тогда главная форма, а с ней вместе и приложение закрываются методом Close. При правильном паро­ле можно продолжать работу приложения. Оператор ShowMessageвведен для того, чтобы показать, как можно использо­вать свойство другой формы — в данном случае текст, введенный пользователем в качестве пароля. В реальном приложении по этому паролю можно было бы определить уровень доступа пользователя к конфиденциальной информации. Затем следует унич­тожение формы запроса пароля методом Free. Это необходимо сделать, чтобы освободить память. Сама по себе эта форма в мо­мент ее закрытия не уничтожается, поскольку по умолчанию за­крыть форму — значит сделать ее невидимой. Уничтожать фор­му до этого момента было нельзя, так как при этом уничтожи­лась бы содержащаяся в ней информация — введенный пароль.

Описанный выше способ управления формой запроса пароля не является единственным. Он просто призван был показать, как можно обрабатывать величину ModalResult,возвращаемую ме­тодом ShowModal.

 

Практическая часть

 

2.1. Разработайте SDI-приложение «Текстовый редактор».

Интерфейс приложения должен отвечать следующим условиям:

1. Главное меню приложения имеет пункты «Файл», «Правка», «Формат».

2. В пункте «Файл» используются команды «Создать», «Открыть», «Сохранить как…», «Выход», в пункте «Правка» - команды «Отменить», «Вырезать», «Копировать», «Вставить», в пункте «Формат» - команда «Шрифт».

3. Все команды меню должны иметь «горячие» клавиши.

4. Приложение должно иметь панель инструментов с кнопками, дублирующими все команды основного меню.

5. В области текста редактора предусмотреть возможность открытия контекстного меню, содержащего команды «Вырезать», «Копировать», «Вставить».

6. Команда «Файл» | «Открыть»должна обеспечивать возможность открытия текстовых файлов следующих типов: *.txt, *.pas, *.dpr и *.*.

Примечания.

1. Для создания основного окна редактора используйте компонент RichEdit (страница Win32).

2. Для реализации команд пунктов меню «Файл»,«Формат» используйте компоненты OpenDialog, SaveDialog, FontDialog(страница Dialogs).

3. Для команд пункта «Правка» используйте следующие методы для работы с буфером обмена: CutToClipboard – вырезать в буфер обмена, CopyToClipboard – копировать в буфер обмена, PasteFromClipboard – вставить из буфера обмена, Undo – отменить операцию. Можно также использовать объект Clipboard, предварительно подключив модуль Clipbrd в раздел uses основного модуля.

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

2.3. Модифицируйте программу так, чтобы при перемещении курсора в тексте между словами, выделенными различными стилями начертания, соответствующие изменения (активизация кнопок) происходили в панели инструментов.

2.4. Дополните пункт меню «Правка» командами «Найти» (компонент FindDialog) и «Заменить» (компонент ReplaceDialog).

2.5. Разработайте для приложения «Текстовый редактор» модальную форму заставки и парольную форму.

Примечание. Для формы пароля можно использовать готовую форму Password Dialog из репозитория Delphi.

2.6. Разработайте приложение «Музыкальная открытка». Приложение должно обеспечивать выбор цвета формы, ввод текста поздравления, изменение шрифта текста, добавление рисунка и звуковой мелодии. После щелчка по кнопке «Готово» на форме должны остаться видимыми только текст, рисунок и должна звучать мелодия.

Примечание.Используйте компонент MediaPlayer (страница System).

 

Содержание отчета по лабораторной работе

Отчет должен быть оформлен как документ MS Word, в котором для каждого варианта программы «Текстовый редактор» и программы по п.2.6 необходимо представить:

1) основное окно формы в момент выполнения программы;

2) окна, демонстрирующие результаты выполнения программы;

3) текст основного модуля с комментариями;

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.