КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Диалоги. Элементы работы с текстами. Текстовые Файлы
В OC Windows определены 2 типа диалогов: общие диалоги (Commondialogs) и диалоги сообщений (MessageDialogs). Аналогичные диалоги реализованы в Delphi. Общие диалоги включают в себя (см. рис.24.). Перечислим все общие диалоги Delphi по порядку: – OpenDialog – диалог открытия файлов; – SaveDialog - диалог сохранения файлов; – OpenPictureDialog- диалог открытия рисунков; – SavePictureDialog - диалог сохранения рисунков; – FontDialog - диалог выбора шрифтов и размера шрифта; – ColorDialog - диалог выбора палитры цветов; – PrintDialog - диалог печати; – PrintSetupDialog- диалог установки параметров (принтера)печати; – FindDialog – диалог поиска; – ReplaceDialog - диалог поиска и замены. Кроме этих диалогов имеются класс диалогов сообщений. К ним относятся: – Процедура ShowMessage (‘ Cообщение’) – Функция MessageDlg (‘Подпись окна’, Тип диалога, [Cочетание кнопок и знака], HelpCtх: integer). Особенно интересным является диалог MessageDlg, который позволяет собрать коллекции до трех и со знаком диалога. Вот некоторые заготовки кнопок. Таблица 2.1.
Для этого диалога определены следующие типы диалогов. Таблица 2.2.
Упражнение №1. Установите на форме кнопку и напишите для события OnClick cледующий код. Запустите программу и обратите внимание на форму диалога. procedure TForm1.Button1Click(Sender: TObject); var r:byte; begin r:=messagedlg('Внимание',mtwarning,[mbyes,mbNo],1); r:=messagedlg('Ошибка',mterror,[mbyes,mbNo,mbIgnore],1); r:=messagedlg('Информация',mtinformation,[mbyes,mbNo,mbCancel],1); r:=messagedlg('Вопрос',mtconfirmation,[mbyes,mbNo,mbAll],1); end; При запуске программы вы получите следующие диалоги (см. рис.26.).
Рис.26. Для активизации общих диалогов применяется процедура execute. Например, для активизации цветового диалога необходимо установка элемента ColorDialog на форму и при программировании событий написать код: Colordialog1.execute. Эти диалоги Вам знакомы из приложений Windows. Упражнение №2. Установите на форме элемент edit1, colordialog1, Fontdialog1 и три кнопки button1, button2, button3. Подпишите кнопки. Таблица 2.3.
У Вас должна быть следующая картина (см. рис.27.). Рис.27. Из рисунка вы уже определили где экземпляры Colordialog и Fontdialog. Теперь напишите код обработки щелчка для каждой кнопки. {активизация цветового диалога и передача цвета тексту элемента edit1} procedure TForm1.Button1Click(Sender: TObject); begin colordialog1.Execute; edit1.Font.Color:=colordialog1.Color; end; {активизация диалога выбора шрифтов и передача выбранного шрифта тексту элемента edit1} procedure TForm1.Button2Click(Sender: TObject); begin fontdialog1.Execute; edit1.Font:=fontdialog1.Font; end; {Выход с подтверждением} procedure TForm1.Button3Click(Sender: TObject); var r: byte; begin r:=messagedlg('Внимание!',mtwarning,[mbyes,mbNo],1); if r=6 then halt; end; В результате запуска мы можем выбрать цвет,шрифт и выйти из программы нажатием на установленных кнопок.На рисунке показан диалог выбора цвета. Рис.28. Обратите внимание на процедуру выхода по щелчку мышкой по третьей кнопке. Выход осуществляется методом HALT при нажатии кнопки YES диалога MessageDlg. Для рассмотрения примеров вначале ознакомимся с некоторыми общими свойствами визуальных элементов Delphi. Таблица 2.4.
Приведем теперь основные события Delphi. Таблица 2.5.
Упражнение №3. Создайте редактор текстов с использованием элемента Richedit. Установим на форме элемент Richedit1, Panel1 (для создание панели инструментов-toolbar) c кнопками для выравнивания текстов, выбора шрифта. Создадим меню аналогичное меню текстового редактора WordPad. Установим на форма диалоги: ColorDialog1, FontDialog1, OpenDialog1, SaveDialog1. Рис.29. Когда мы устанавливаем на форму визуальные элементы, за “кулисами” происходит автоматическое внедрение в модуль формы соответствующего кода. Код начального состояния модуля после установки визуальных элементов и создания меню приводится ниже. Обратите внимание на сходство и различие модуля Tyrbo Pascal и Delphi. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, Buttons, ExtCtrls, StdCtrls, ComCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; RichEdit1: TRichEdit; Panel1: TPanel; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; N1: TMenuItem; {имена пунктов сформированы автоматически} N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; procedure FormCreate(Sender: TObject); private {Private declarations} public {Public declarations} end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin end; end. Теперь приведем коды обработки пунктов меню и нажатие кнопок на панели управления (панель инструментов). procedure TForm1.SpeedButton1Click(Sender: TObject); {процедура для кнопки с рисунком диска – сохранить} begin savedialog1.execute; if savedialog1.FileName<>'' then richedit1.Lines.SaveToFile(savedialog1.FileName); end; procedure TForm1.SpeedButton2Click(Sender: TObject); {процедура для кнопки для открытия файла} begin opendialog1.Execute; if opendialog1.FileName<>'' then richedit1.Lines.LoadFromFile(opendialog1.filename); end; procedure TForm1.SpeedButton3Click(Sender: TObject); {процедура выравнивания параграфа по левому краю} begin richedit1.Paragraph.Alignment:=taLeftJustify end; TForm1.SpeedButton4Click(Sender: TObject); {процедура выравнивания параграфа по центру} begin richedit1.Paragraph.Alignment:=taCenter end; Form1.SpeedButton5Click(Sender: TObject); {процедура выравнивания параграфа по правому краю} begin richedit1.Paragraph.Alignment:=taRightJustify end; procedure TForm1.SpeedButton6Click(Sender: TObject); {процедура установки атрибутов для выделенного текста: шрифт, размер, цвет} begin fontdialog1.Execute; richedit1.SelAttributes.Name:= Fontdialog1.Font.Name; richedit1.SelAttributes.Size:= Fontdialog1.Font.Size; richedit1.SelAttributes.Color:= Fontdialog1.Font.Color; end; procedure TForm1.N2Click(Sender: TObject); {процедура открытия файла для пункта меню – Открыть} begin opendialog1.Execute; if opendialog1.FileName<>'' then richedit1.Lines.LoadFromFile(opendialog1.filename); end; procedure TForm1.N3Click(Sender: TObject); {процедура cхранения файла для пункта меню – Сохранить} begin savedialog1.execute; if savedialog1.FileName<>'' then richedit1.Lines.SaveToFile(savedialog1.FileName); end; Аналогично создаются процедуры и для работы с ClipBoard. В итоге мы имеем редактор, в котором можно создать документы в формате rtf (см. рис.30). Приведем некоторые свойства и методы элемента Richedit. Таблица 2.6.
Для сохранения текста в файлах в формате Rtf элемент Richedit содержит 2 процедуры: richedit1.Lines.LoadFromFile(filename: string); richedit1.Lines.SaveToFile(FileName:string); Подумайте, как сохранить текст редактора Richedit в формате Windows text (*.txt). Упражнение №4. Теперь рассмотрим текстовый редактор Memo. Oн по сути похож на редактор «Блокнот». Как видно из рис.31, редактор Memo может работать с достаточно большим многострочным текстом. Конечно, установить свойства для фрагментов текстов в этом редакторе реализовать нельзя. Cоздадим меню и панель инструментов и напишем код обработки нажатия кнопок и выбора пунктов меню. Добавим диалоги открытия и сохранения файлов, причем установим для них фильтры. В результате мы имеем следующую картину. Рис.30. Рис.31. Рис.32. Приведем теперь код модуля формы. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus; Type {создание этого раздела происходит автоматически} TForm1 = class(TForm) Memo1: TMemo; MainMenu1: TMainMenu; Fail: TMenuItem; Save: TMenuItem; open: TMenuItem; Panel1: TPanel; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; procedure openClick(Sender: TObject); procedure SaveClick(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); procedure SpeedButton8Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); private {Private declarations} public {Public declarations} end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.openClick(Sender: TObject); begin {код обработки пункта меню открыть} opendialog1.filter:='Текстовые файлы|*.txt|'+'Все файлы|*.*|'; opendialog1.execute; memo1.Lines.LoadFromFile(opendialog1.filename); end; procedure TForm1.SaveClick(Sender: TObject); {код обработки пункта меню сохранить} begin {установка фильтра диалога сохранения и его активизация} savedialog1.filter:='Текстовые файлы|*.txt|'; savedialog1.execute; memo1.Lines.SaveToFile(savedialog1.filename); end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin {выравнивание текста по центру} memo1.Alignment:=taCenter; end; procedure TForm1.SpeedButton4Click(Sender: TObject); {выравнивание текста влево} begin memo1.Alignment:=taLeftJustify; end; procedure TForm1.SpeedButton5Click(Sender: TObject); {выравнивание текста вправо} begin memo1.Alignment:=taRightJustify; end; procedure TForm1.SpeedButton6Click(Sender: TObject); {установка полужирного стиля шрифта} begin memo1.Font.Style:=[FsBold]; end; procedure TForm1.SpeedButton7Click(Sender: TObject); {установка наклонного стиля шрифта} begin memo1.Font.Style:=[FsItalic]; end; procedure TForm1.SpeedButton8Click(Sender: TObject); {установка подчеркнутого стиля шрифта} begin memo1.Font.Style:=[FsUnderline]; end; procedure TForm1.SpeedButton1Click(Sender: TObject); {код обработки кнопки открыть} begin opendialog1.filter:='Текстовые файлы|*.txt|'+'Все файлы|*.*|'; opendialog1.execute; memo1.Lines.LoadFromFile(opendialog1.filename); end; procedure TForm1.SpeedButton2Click(Sender: TObject); {код обработки кнопки сохранить} begin savedialog1.filter:='Текстовые файлы|*.txt|'; savedialog1.execute; memo1.Lines.SaveToFile(savedialog1.filename); end; end. Рассмотрим код программы, который формируется автоматически и разработчику не всегда на это нужно обратить внимание. program Pmemo; uses Forms, Unitmemo in 'Unitmemo.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Рис.33. Такой подход к программированию реализован в Object Pascal, который и является основой Delphi. В результате мы имеем настоящий текстовый редактор, который может хранить только текст без параметров (шрифт, стиль, цвет и т.д.) (см. рис.33). Приведем основные свойства и методы объекта Memo. Таблица 2.7.
Вопросы и упражнения. 1. Как сохранить текст из элемента Richedit построчно в формате rtf? 2. Создайте собственный формат сохранения текста из элемента Rtf с учетом форматов выделенных фрагментов. 3. Программируйте автоматическую передачу текста из элемента Richedit в текстовый процессор Ms Word. 4. Создайте формат сохранения текста из элемента Memo c cохранением параметров текста: выравнивание, цвет, имя шрифта, размер букв, стиль шрифта. Причем эти данные сохраните в начале файла. 5. Каким образом можно организовать вставка таблицы в элемент Memo и RichEdit. Программируйте это. 6. Изучите самостоятельно свойства элемента Richedit.Canvas и Memo.Canvas. Объясните, для чего свойства холста для элементов Richedit и Memo.
Дата добавления: 2014-01-05; Просмотров: 775; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |