Студопедия

КАТЕГОРИИ:


Архитектура-(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.

Название кнопки Что за кнопка Возвращаемый код при нажатии Название кнопки Что за кнопка Возвращаемый код при нажатии
1. MbYes Yes   6. MbRetry Retry  
2. MbNo No   7. MbIgnore Ignore  
3. mbOk Ok   8. MbAll All  
4. MbCancel Cancel   9. MbHelp Help  
5. MbAbort Abort  

 

Для этого диалога определены следующие типы диалогов.

Таблица 2.2.

Название диалога Знак Название диалога Знак
1. MtWarning Восклицательный! 4. mtConfirmation Вопросительный?
2. MtError Знак ошибки 5. mtCustom Пользовательский
3. Mtinformation Знак информации i

 

Упражнение №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.

Кнопка Значение свойства Caption
Button1 Цвет текста
Button2 Шрифт
Button3 Выход

 

У Вас должна быть следующая картина (см. рис.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.

Название свойства Назначение свойства Название свойства Назначение свойства
1. Width Ширина объекта 8. Font Шрифт текста объекта
2. Top Отступ от верхнего края экрана в пикселях 9. Visible Показать или спрятать объект
3. Left Отступ от левого края экрана в пикселях 10. Enabled Доступ к видимому объекту
4. Height Высота объекта 11. ShowHint Показать или спрятать подсказку
5. Caption Надпись (заголовок) объекта 12. Font.Color Цвет текста
6. Name Имя экземпляра объекта 13. Font.Size Размер букв
7. TabOrder Индекс табуляции

 

Приведем теперь основные события Delphi.

Таблица 2.5.

Событие Что означает Событие Что означает
1. OnClick Щелчок левой кнопкой мыши 7. OnKeyUp Клавиша отпущена
2. OnDrugDrop Перетащить и бросить 8. OnMouseDown Клавиша мыши нажата
3. OnEnter Нажатие клавиши Enter 9. OnMouseUp Клавиша мыши отпущена
4. OnExit Выход 10. OnMouseMove Мышка перемешается
5. OnKeyDown Клавиша нажата 11. OnStartDrog Начало перетаскивания
6. OnKeyPress Нажатие клавиши с Asc- кодом

 

Упражнение №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.

Свойство Назначение (значение) Свойство Назначение (значение)
1. Paragraph Абзац 3. SelAttributes Свойства выбранного фрагмента
2. Paragraph.Alignment Выравнивание абзаца   SelAttributes.Name Название шрифта
TaCenter по центру   SelAttributes.Size Размер букв
TaRightJustify по правому краю   SelAttributes.Color Цвет
TaLeftJustify по левому краю   SelAttributes.Style:=[FsBold] Жирный шрифт
      SelAttributes.Style:=[FsItalic] Курсив
      SelAttributes.Style:=[FsUnderline] Подчеркнутый
      SelAttributes.Style:=[FsBold, FsItalic] Полужирный курсив
      SelAttributes.Style:=[] Обычный

 

Для сохранения текста в файлах в формате 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. .Alignment Выравнивание 3. .Font.color Цвет шрифта
  .Alignment:=taLeftJustify Влево 4. .Font Установка шрифт
  .Alignment:=taRightJustify Вправо 5. .Lines.Add('Текст') Добавляет строку текста
  .Alignment:=taCenter По центру 6. .Clear Удаляет весь текст
2. .Font.Style Установка стиля шрифта 7. .CopyToClipboard Копирует текст в буфер обмена
  .Font.Style:=[] Обычный стиль 8. .CutToClipboard Вырезает в буфер обмена
  .Font.Style:=[FsBold] Полужирный стиль 9. .PasteFromClipboard Вставка из буфера обмена
  .Font.Style:=[FsItalic] Курсив 10. .Brush.Color Установка цвета фона
  .Font.Style:=[FsUnderLine] Подчеркнутый

 

Вопросы и упражнения.

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; Просмотров: 753; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.128 сек.