Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Создание и сохранение текстовой информации




1. Создание макета формы.

Запустите Turbo Delphi, (или если Turbo Delphi уже запущена) введите команду File\New\VCL Forms Application – Delphi for Win32

Макет формы представляет образ формы в интегрированной среде разработки программы с размещенными на ней компонентами.

Компонентом называют размещаемый на макете формы имеющий образ объект, а также соответствующий значок в Палитре компонентов, предоставляющий определённые функциональные возможности для разрабатываемой программы. Предописанные компоненты Delphi представляют классы, имеющие такие же имена, но с префиксом T. Например, компонент Memo – многострочный текстовый редактор класса TMemo позволяет хранить строки текста, отображать их в своём окне, иметь полосы прокрутки, выделять фрагменты текста и работать в выделенными фрагментами и т.д..

1.1.Разместите на форме компонент Memo1 – многострочный редактор текста: на панели инструментов Standard щелкните на значке TMemo, а затем щелчком на форме, буксировкой и перетаскиванием маркеров придайте ему такие размеры и положение, чтобы осталось сверху место для размещения других компонентов.

1.2.Разместите на форме значок MainMenu1: на панели инструментов Standard щелкните на значке MainMenu, а затем на свободном месте на форме. Этот компонени будет использован для создания на форме строки меню с подменю.

Рис. 1. Макет формы с элементами управления

1.3.Аналогично, используя панель инструментов Dialogs, разместите на форме значки OpenDialog1 – окна диалога выбора открываемого файла, SaveDialog1 - окна диалога выбора файла для сохранения редактируемого текста.

1.4.Выполните программу, убедитесь в том, что невизуальные компоненты – значки меню и диалогов не отображаются на форме, а в остальном вид формы полностью соотетствует её макету.

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

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

 

Рис. 2. Конструктор меню

 

 

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

- Визуальными компонентами называют те, которые имеют окна, то есть могут быть видимыми при работе программы. Например, компоненты Memo, Label, Edit.

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

Рис. 3. Дерево объектов: форма и подчиненные ей объекты

Рис. 4. Вкладка Properties Инсперктора объектов после добавления пункта меню Создать.

Рис. 5. Вкладка Events Инсперктора объектов. После создания шаблона обработчика щелчка на пункте меню Создать.

 

2. Создание структуры меню.

2.1. Двойным щелчком на значке MainMenu1 откройте Конструктор меню (см. рис. 2), дайте первому пункту строки меню название Файл, а первому пункту его подменю название Создать.

Справка.Чтобы добавить пункт меню/подменю, следует щелчком выделить свободную рамку в Конструкторе меню, набрать текст названия пункта меню в строке Caption окнаИнспектора объектов – Object Inspector на вкладке Properties(см. рис. 4) и нажать клавишу Enter. Если это название набрано русскими буквами, то именем пункта меню, используемым в программе, будет имя вида N<число>. Например, для первого пункта меню - N1, для второго - N2, и так далее.

Форма и расположеные на ней компоненты образуют иерархическю структуру, отображаемую в окне Дерева объектов (окне Structure). Для выполняемого задания её вид представлен на рис. 3.

3. Создание заглушек обработчиков событий.

Обработчик события – это метод, автоматически вызываемый при наступлении события, связанного с формой или компонентом и имеющий в программе определенную функцию, то есть выполняющий определённую работу в соответствующей ситуации. Например, обработчик щелчка на пункта меню Файл/Открыть… должен, в частности, обеспечить диалог по выбору файла и загрузку его текста в поле многострочного редактора (TMemo).

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

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

3.1.Для пункта меню Создать двойным щелчком в строке OnClick на вкладке Events в окне Инспектора объектов (см. рис. 5) или двойным щелчком на строке Создать {N2} в дереве объектов создайте шаблон обработчика события – щелчка на пункте меню Создать во время исполнения программы, и превратите его в заглушку, добавив комментарий

procedure TForm1.N2Click(Sender: TObject);

begin

//Обработчик щелчка на пункте меню ФАЙЛ.СОЗДАТЬ

end;

Справка. Если не добавить что-либо в шаблон обработчика события, то он и соответствующий заголовок метода в объявлении класса TForm1 будут удалены из текста программы при её подготовке к выполнению.

3.2.Аналогично, снабдив соответствующими комментариями, создайте заглушки обработчиков событий – щелчков на всех пунктах подменю строки меню.

3.3.Аналогично, снабдив соответствующим комментарием, создайте заглушку обработчика события – создания формы, шаблон которого можно получить так: щелкнуть на свободном месте макета формы и в Инсперторе объектов на вкладке Events сделать двойной щелчок в строке OnCreate.

После добавления на форму управляющих элементов и заглушек обработчиков событий объявление класса формы TForm1 примет вид

type

TForm1 = class(TForm)

Memo1: TMemo;

MainMenu1: TMainMenu;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

4. Добавление переменных, представляющих текущее состояние процесса обработки данных.

procedure TForm1.FormCreate(Sender: TObject);

begin

//Обработчик события СОЗДАНИЯ ФОРМЫ

//При создании формы удалить текст из

//Memo1 - рабочей области редактора

Memo1.Clear;

//заполнить рабочей областью редактора

//(то есть развернуть элемент Memo1 во)

//всю клиентскую область окна формы

Memo1.Align:=alClient;

procedure TForm1.N6Click(Sender: TObject);

begin

//Обработчик щелчка на пункте меню ФАЙЛ.СОХРАНИТЬ КАК...

//Открытие окна диалога для выбора папки и

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

//сохранить текст из Memo1-рабочей области редактора

if Form1.SaveDialog1.Execute then begin

//Если файл выбран,

//то S присвоить спецификацию файла,

S:=SaveDialog1.FileName;

Справка. Эти переменные используются разными методами и их объявление можно дать либо внутри объявления класса, либо в разделе var в интерфейсной части, либо в разделе var в части реализации.

4.1.Добавьте в раздел реализации объявление переменной S:string. Она должна представлять спецификацию файла, обрабатываемого в текущий момент. Её пустое значение будет обозначать, что текст из элемента Memo1 еще не сохранен в файле.

5. Создание обработчиков событий.

5.1.Добавьте в метод procedure TForm1.FormCreate(Sender: TObject) обработки события FormCreate операторы и комментарии, как на рис.8.

5.2.Создайте обработчик procedure TForm1.N6Click(Sender: TObject) события щелчка на пункте меню Файл\Сохранить как…, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, как на рис. 9.

Для проверки работы. Запустите программу, наберите в поле Memo1 строки Иванов…. 5 5 5 и Медоватов. 4 4 5 (фамилии дополнены точками до 10 символов) и сохраните этот текст в текущей папке в файле F1.txt. Затем откройте этот файл на новой вкладке с именем F1.txt окна редактора текстов Delphi следующим образом: введите команду Файл/Открыть…, в появившемся окне диалога Open выберите в раскрывающемся списке Тип файлов: строку Any file(*.*), в списке файлов выберите F1 и щелкните на кнопке Открыть. В дальнейшем, если будет выполняться сохранение в файле, в среде Delphi будет появляться сообщение, предлагающее обновить текст на вкладке F1.txt.

5.3.Создайте самостоятельно обработчик procedure TForm1.N5Click(Sender: TObject) события щелчка на пункте меню Файл\Сохранить, имея в виду следующее: если текст ещё не сохранялся в файле, точнее, если S=’’, то следует вызвать N6Click(Self) -обработчик, созданный для пункта меню Файл.Сохранить как… в предыдущем пункте задания, иначе – просто выполнив оператор Memo1.Lines.SaveToFile(S) – сохранение всего редактируемого текста в файле со спецификацией, хранящейся в S.

 

procedure TForm1.N3Click(Sender: TObject);

begin

//Обработчик щелчка на пункте меню ФАЙЛ.ОТКРЫТЬ...

if Memo1.Modified then begin //если текст Memo1 был

// изменён, то предложить диалог для выбора файла

case MessageDlg('Текст был изменен. Сохранить данные'+

' в файле по выбору?', mtConfirmation,

[mbYes, mbNo, mbCancel], 0) of

6{idYes}: begin // сохранить текст в файле, выбрав его

//в диалоге ФАЙЛ.СОХРАНИТЬ КАК...

N6Click(Self);

//перейти к диалогу ФАЙЛ.ОТКРЫТЬ

end;

{2}idCancel: exit;//выйти из диалога ФАЙЛ.ОТКРЫТЬ

//в редактор без сохранения

{7}idNo:;//не сохранять текст в файле и

5.4.Создайте обработчик procedure TForm1.N3Click(Sender: TObject) события щелчка на пункте меню Файл\Открыть…, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду следующее.

5.4.1.Если редактируемый текст не был изменён (Memo1. Modified ложно), то сразу перейти к диалогу открытия файла, иначе следует предложить пользователю разрабатываемой программы выбрать в диалоге (см. справку по функции MessageDlg) вариант продолжения работы с измененным текстом:

- I) или сохранить его в файле по выбору, вызвав N6Click(Self) и затем открыть новый файл;

- II) или не сохранять текст и открыть новый файл;

- III) или отменить выполнение команды, выйдя из метода по exit и продолжить редактирование текста, как если бы команда открытия файла вообще не вводилась.

(см. текст обработчика рис. 10).

5.4.2.Диалог для выбора открываемого файла запускается командой OpenDialog1.Execute (см справку по классу TOpenDialog). Если открываемый файл не был выбран (в окне диалога Открыть была нажата кнопка Отмена), то следует просто выйти из обработчика (вернуться к редактированию прежнего текста), иначе следует загрузить выбранный файл на редактирование, переменной S присвоить спецификацию этого файла и отобразить её в заголовке окна форма, а также свойству Memo1.Modified присвоить значение false – признак того, что загруженный на редактирование текст не изменён.

5.5.Создайте самостоятельно обработчик procedure TForm1.N7Click(Sender: TObject) события щелчка на пункте меню Файл.Выход, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду следующее. Если редактируемый текст не был изменён (Memo1.Modified ложно), то сразу завершите работу программы оператором close, иначе следует предложить пользователю разрабатываемой программы выбрать в диалоге (см. справку по функции MessageDlg) вариант продолжения работы с измененным текстом:

- I) или сохранить его в файле (пользователь нажал кнопку Yes) по выбору, вызвав N6Click(Self) и затем завершитm работу программы;

- II) или не сохранять текст (пользователь нажал кнопку No) и завершить работу программы;

- III) или отменить выполнение команды (пользователь нажал кнопку Cancel), выйдя из метода по exit и продолжить редактирование текста, как если бы команда завершить работу программы вообще не вводилась.

При выполнении этого пункта задания используя вкладки Index или Search справочной системы Turbo Delpi сначала следует найти справку по функции MessageDlg, затем – допустимые значения её параметров из числа стандартных. Например, вызов функции

MessageDLG('Сохранить файл?',mtInformation,[mbCancel,mbYes,mbNo],0)

обеспечит диалог вида


Поделиться:

Дата добавления: 2015-09-15; просмотров: 92; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты