Лабораторная. Лабораторный практикум(часть1) Электронный. Практикум по дисциплине Разработка приложений в визуальных средах для студентов специальностей
Скачать 3.27 Mb.
|
2. Постановка задачиРазработать приложение отображения результатов вычислений в виде графика 3. ЗаданияПостроить графики функций для соответствующих вариантов из работы №1. Таблицу данных получить путем изменения параметра X с шагом h. Вывод исходных данных организовать через окна TЕdit. Самостоятельно выбрать удобные параметры настройки. ЛАБОРАТОРНАЯ РАБОТА 9Разработка приложения, состоящего из нескольких формЦель лабораторной работы: Изучить основные свойства и методы, связанные с созданием и активизацией форм. 1. Краткие сведенияСложное приложение может состоять более чем из одной форы. Для добавления в проект новой формы необходимо выполнить команду New Form. В дальнейшем показать нужную форму можно с помощью методов ShowModal – модальный режим, либо Show – немодальный режим. Оба этих режима отличаются тем, что в модальном режиме невозможно одновременно выполнять действия более, чем на одной форме. Напротив, в немодальном режиме имеется возможность свободно переходить с формы на форму без закрытия остальных. Для реализации визуальных способов изменения данных в программе используются различные компоненты. Одной из часто используемых компонент, является компонента TScrollBar. Компонент TScrollBar Это управляющий элемент, расположенный на стандартной закладке палитры компонент с пиктограммой , похожий на полосу скроллинга окна и используемый для изменения числовой величины визуальным изменением положения бегунка компоненты. Свойствами этого компонента являются: Kind = (sbHorisontal, sbVertical) – для задания расположения TScrollBar; Min, Max : Integer – для установки минимального и максимального значений изменяемой величины; Position : Integer – в этом свойстве находится текущее значение числа; LargeChange : TScrollBarInс, SmallChange :TScrollBarInc - с помощью этих свойств соответственно можно устанавливать малый и большой сдвиг бегунка. При изменении положения бегунка возникает событие OnScroll. Чтобы программным образом устанавливать положение бегунка в заданное место используется метод: SetParams(Aposition, Amin, Amax : integer). Смешивание цветов Для получения составного цвета можно использовать смешивание трех составляющие цветов при вызове функции RGB (red,green,blue), например, Color:= RGB(255, 0, 0); //ярко – красный цвет. 2. Постановка задачиРазработать приложение, состоящее из нескольких форм и поддерживающее визуальное изменение данных. 3. ЗаданиеВзять за основу задание к лабораторной работе №7. Добавить к проекту дополнительную форму, на которой реализовать смешивание цветов. При этом должен быть организован диалог приложения, как показано на рисунке 9.1. Рисунок 9.1 – Форма приложения Выбранный цвет необходимо применить к одной из компонент главной формы. Замечание. Вызов формы смешивания цветов реализовать в модальном и немодальном режимах. ЛАБОРАТОРНАЯ РАБОТА 10Разработка приложения с сохранением параметров и установок в Ini-файлахЦель лабораторной работы: Изучить возможности автоматического сохранения параметров и установок, принятых в программе. 1. Краткие сведенияУдобным средством запоминания текущих настроек приложения являются ini-файлы. Ini-файлы - это текстовые файлы, предназначенные для хранения информации о формах или о настройках различных приложений. Информация в файле логически группируется в разделы, каждый из которых начинается оператором заголовка, заключенным в квадратные скобки, например, [Desktop]. В строках, следующих за заголовком, содержится информация, относящаяся к данному разделу, в виде: <ключ>=<значение> Любое приложение можно зарегистрировать в системном реестре и зафиксировать там же текущие настройки приложения (в 32-разрядных Windows и выше). Для 32-разрядных приложений Microsoft не рекомендует работать с Ini-файлами. Ннесмотря на это, и 32-разрядные приложения, наряду с реестром, часто используют эти файлы. Да и разработки Microsoft не обходятся без этих файлов. Ini-файлы, как правило, хранятся в каталоге Windows, который можно найти с помощью функции GetWindowsDirectory. В Delphi работу с Ini-файлами проще всего осуществлять с помощью создания в приложении объекта типа TIniFile. Этот тип описан в модуле IniFiles, который надо подключать к приложению оператором uses (автоматически это не делается). Создается объект типа TIniFile методом Сгеаtе(<имя файла>), в который передается имя Ini-файла, с которым он связывается. Для записи значений ключей существует несколько методов: WriteString, WriteInteger, WriteFloat, WriteBool и др. Каждый из них записывает значение соответствующего типа. Объявления всех этих методов очень похожи. Например: procedure WriteString (const Section, Ident, Value: string); procedure WriteInteger(const Section, Ident: string; Value: Longint); Здесь Section — раздел Ini-файла, Ident — имя ключа, Value — значение ключа. Если соответствующий раздел или ключ отсутствует в файле, он автоматически создается. Имеются аналогичные методы чтения значений ключей: ReadString, ReadInteger, ReadFloat, ReadBool и др. Например: function ReadString(const Section, Ident, Default: string) : string; function ReadInteger(const Section, Ident: string; Default: Longint) : Longint; В этих примерах методы чтения возвращают значение ключа Ident раздела Section. Параметр Default определяет значение, возвращаемое в случае, если в файле не указано значение соответствующего ключа. Проверить наличие значения ключа можно методом ValueExists, в который передаются имена раздела и ключа. Метод DeleteKey удаляет из файла значение указанного ключа в указанном разделе. Проверить наличие в файле необходимого раздела можно методом SectionExists. Метод EraseSection удаляет из файла указанный раздел вместе со всеми его ключами. Имеется еще ряд методов, которые можно посмотреть во встроенной справке Delphi. Рассмотрим на примере, как запоминать и удалять настройки программы. Создадим простое тестовое приложение. Поместим на форму три компонента Button и компонент FontDialog. Первой кнопку присвоим имя (Name) BInst и зададим Install в ее свойстве Caption. Эта кнопка будет имитировать установку программы. Точнее, не саму установку, поскольку копировать файлы с установочной дискеты мы не будем, а только создание Ini-файла в каталоге Windows. Вторую кнопку назовем BUnInst и зададим UnInstall в ее свойстве Caption. Эта кнопка будет имитировать удаление программы. Здесь мы не будем удалять программу с диска, а только удалим из каталога Windows наш ini-файл. Третью кнопку назовем BFont и зададим Font в ее свойстве Caption. С помощью этой кнопки будем менять имя шрифта, используемого в форме. Имя этого шрифта надо будет запоминать в Ini-файле, чтобы в дальнейшем при запуске приложения можно было читать эту настройку и задавать ее форме. Текст программы: unit LabRab_10; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IniFiles; type TForm1 = class(TForm) BInst: TButton; BUnInst: TButton; BFont: TButton; FontDialog1: TFontDialog; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure BInstClick(Sender: TObject); procedure BUnInstClick(Sender: TObject); procedure BFontClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Ini : TIniFile; sFile: string; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var APchar: array[0..254] of Char; begin //Формирование имени каталога Windows GetWindowsDirectory(APchar, 255); //Формирование имени ini-файла в каталоге Windows sFile := string(APchar) + '\My.ini'; if FileExists(sFile) then begin Ini := TIniFile.Create(sFile); // Чтение в имя шрифта формы значения ключа Шрифт Font.Name := Ini.ReadString('Параметры', 'Шрифт', 'MS Sans Serif'); end; end; procedure TForm1.BInstClick(Sender: TObject); var f: File; begin //Проверка существования ini-файла if (not FileExists(sFile)) then begin // Создание ini-файла AssignFile(f, sFile); Rewrite(f); CloseFile(f); Ini := TIniFile.Create(sFile); end; //Создание раздела Files, ключа main и запись в него имени //выполняемого файла вместе с путем Ini.WriteString('Files','main', ParamStr(0)); //Создание раздела Параметры, ключа Шрифт и //запись в него имени шрифта формы Ini.WriteString('Параметры', 'Шрифт', Font.Name); end; procedure TForm1.BUnInstClick(Sender: TObject); var F: File; begin //Удаление с диска ini-файла, если он существует if FileExists(sFile) then begin AssignFile(F, sFile); Erase(F); end; end; procedure TForm1.BFontClick(Sender: TObject); begin //Выбор шрифта if (FontDialog1.Execute) then begin // Присваивание выбранного шрифта форме Font.Assign(FontDialog1.Font); if (Ini<>nil) and Ini.ValueExists('Параметры','Шрифт') then // Запись шрифта в ключ "Шрифт" раздела "Параметры" Ini.WriteString('Параметры','Шрифт', Font.Name); end; end; procedure TForm1.FormDestroy(Sender: TObject); begin if (Ini = nil) then Exit; //Очистка буфера и запись файла на диск Ini.UpdateFile; //Освобождение памяти Ini.Free; end; end. В начале текста следует подключение к приложению модуля IniFiles и объявление переменной Ini типа TIniFile, а также переменной sFile, в которой будет формироваться имя файла и путь к нему. Ini : TIniFile; sFile: string; При создании формы приложения в процедуре TForm1.FormCreate формируется имя файла (My.Ini) вместе с путем к нему - каталогом Windows. Путь Windows определяется функцией GetWindowsDirectory. Далее функцией FileExists проверяется, существует ли этот файл, т.е. проведена ли уже установка программы. Если существует, то создается объект Ini, связанный с этим файлом, и значение MS Sans Serif ключа Шрифт раздела Параметры читается в имя шрифта формы. Тем самым читается настройка, произведенная при предыдущем выполнении приложения. Теперь рассмотрим процедуру TForm1.BInstClick, имитирующую установку программы. В этой процедуре сначала функцией FileExists проверяется, существует ли в каталоге Windows файл My.Ini. Если не существует, то последовательным применением функций AssignFile, Rewrite и CloseFile этот файл (пока пустой) создается. Затем создается связанный с этим файлом объект Ini. Последующие операторы записывают в этот файл два раздела Files и Параметры с соответствующими ключами. В ключ main записывается имя приложения с путем к нему. Для этого используется функция ParamStr(0). В результате в созданный файл записывается, например, такой текст: [Files] main = D:\DEMO Delphi\DEMO1_INI.EXE [Параметры] Шрифт = МS Sans Serif Процедура TForml.BUnInstClick имитирует удаление приложения и его файла настройки. В данном случае просто удаляется Ini-файл, но в настоящем приложении надо было бы прочитать имя файла (или файлов) приложения из раздела Files и удалить их с диска. Процедура TForm1.FormDestroy, срабатывающая при закрывании формы приложения, сначала методом UpDateFile переписывает содержимое объекта Ini в файл на диске, а затем методом Free удаляет из памяти этот временный объект. Процедура TForml.BFontClick вызывает стандартный диалог выбора шрифта и если пользователь выбрал шрифт, то он присваивается форме и его имя заносится в ini-файл. Сохраните свое приложение и запустите его на выполнение. Нажмите кнопку Install. После этого убедитесь в наличии файла My.Ini в каталоге Windows. Можете воспользоваться для этого программой Windows «Проводник» или любой другой. В частности, можно открыть этот файл просто из среды Delphi. При нажатии кнопки UnInstall файл должен удаляться с диска. Проверьте запись в файл настройки шрифта и чтение ее при последующих запусках. Для этого опять нажмите кнопку Install, а затем нажмите кнопку Font и выберите шрифт с каким-нибудь другим именем. Затем закройте свое приложение и запустите его повторно. Вы увидите, что на форме применен тот шрифт, который вы зарегистрировали в файле настройки. Таким образом, приложение проимитировало установку программы, удаление программы и запоминание ее текущих настроек. После запуска программы и нажатия затем кнопки Install, используя проводник, в директории c:\windows можно увидеть файл MyIni.ini. Содержание файла: [Files] main = D:\DEMO DELPHI EXAMPLES\ DEMO1 INIFILES\PROJECTDEMO1INIFILES.EXE [Параметры] Шрифт = Times New Roman После запуска программы и нажатия кнопки UnInstall в упомянутой директории файл MyIni.ini отсутствует. |