русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Многострочные окна редактирования Memo и RichEdit


Дата добавления: 2014-11-27; просмотров: 2474; Нарушение авторских прав


 

Компоненты Memo и RichEdit являются окнами редактирования многострочного текста. В компоненте Memo формат всего текста одинаков и определяется свойством Font.Компонент RichEditработает с текстом в формате RTF, который позволяет выбирать различные атрибуты форматирования для разных фрагментов текста. При желании изменить атрибуты вновь вводимого фрагмента текста можно задать свойство SelAttributes. Это свойство , в свою очередь имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и ряд других. Установленные атрибуты шрифта влияют на выделенный текст, если же текст не выделен ,то эти атрибуты начинают действовать на вновь вводимый текст. За выравнивание , отступы и другие атрибуты в пределах текущего абзаца отвечает свойство Paragraph, которое в свою очередь имеет ряд подсвойств:

Alignment - определяет выравнивание текста;

FirstIndent - число пикселей отступа красной строки;

Numbering - управляет вставкой маркеров, как в списках;

LeftIndent - отступ в пикселях от левого поля;

RightIndent - отступ в пикселях от правого поля;

TabCount- количество позиций табуляции;

Tab - значения позиций табуляции в пикселях.

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

RichEdit1->Paragraph->Alignment:=taLeftJustify; //Влево

RichEdit1->Paragraph->Alignment:=taCenter; //По центру

RichEdit1->Paragraph->Alignment:=taRightJustify;//Вправо

Перечисленные свойства отличают компонентRichEditот компонента Memo.Общими для этих компонентов являются следующие основные свойства :



Alignment - определяет способ выравнивания текста внутри компонента - по левому краю, правому краю, центру. Значение по умолчанию - по левому краю.

Font - определяет атрибуты шрифта.

Lines - это свойство доступное как при проектировании, так и во время выполнения, имеет множество свойств и методов типа TStrings, которые обычно используются для формирования и редактирования текста.

MaxLength - указывает максимальное количество символов, которое пользователь может вводить в компонент.

Modified - указывает, редактировался ли пользователем текст в компоненте.

PopupMenu -определяет появление всплывающего меню, связанного с данным компонентом.

ReadOnly - указывает, может ли пользователь изменять текст в компоненте.

SelLength, SelStart, SelText –имеют те же значения , что и компонентеEdit.

Text - текст окна в виде одной строки

WantTabs - указывает, можно ли вставить в текст символы табуляции

WordWrap - указывает, переносится ли текст на новую строку, если он превышает ширину компонента.

Элементами списка строк в компонентах Memo и RichEditможно манипулировать,используя следующие типовые методы свойства Lines :

Add ( ) – добавляет новую текстовую строку к концу списка и возвращает номер добавленной сроки.

Append( ) – добавляет новую текстовую строку к концу списка.

Clear( ) – очищает список.

Delate( ) - удаляет элемент с указанным номером.

Insert( ) – вставляет текстовую строку в позицию с указанным номером.

Move( )- перемещает элемент из одной позиции в другую.

LoadFromFile( ) – выгружает список из файла.

SaveToFile ( ) – загружает список в файл.

Примеры использования основных свойств и методов многострочных редакторов представлены на рисунках5.5 –5.8.На рисунке 5.5 показан внешний вид интерфейса, а программный код этого приложения приведен на рисунке 5.6.

Обозначения, принятые в приложении, и свойства используемых компонентов, установленные во время проектирования, поясняются в таблице 5.3. В приложение включены три многострочных окна редактирования (текстовых поля) Memo. Первое из них(Memo1) используется для ввода исходного текста, второе(Memo2) – для отображения изменений исходного текста в результате переключения радио кнопок (RadioButton1 – RadioButton8), а третье (Memo3) – для демонстрации операторов кода при выполнении программы. Назначение остальных компонентов приложения понятно из интерфейса (рис.5.5) и не требует дополнительных пояснений.

Таблица 5.3

Компонент Свойство Значение
Форма Caption Основные свойства текстового поля Memo
Кнопка Name Button1
Caption Ввод текста
  Радио кнопки   Caption Ввод новой строки текста
Caption Перенос всего текста в Поле2
Caption Считывание выделенной строки
Caption Помещение выделенной строки в нач.списка
Caption Удаление 3-ей строки
Сaption Замена местами 2-ой и 4- ой строк
Caption Запись
Caption Считывание
Метки Caption Поле1
Caption Поле2
Caption Код программы
  Многострочное окно редактиров. Name Memo1
Name Memo2
Name Memo3

Другие свойства компонентов принимаются по умолчанию.

Рис.5.5.Интерфейса приложения,демонстрирующего свойства и методы

компонента Memo

// Программный код приложения,демонстрирующего свойства и методы компонента //Memo

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton1Click(TObject *Sender)//Ввод новой строки текста

{

Memo1->Lines->Append("Дополнительная строка");

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Append ("Memo1->Lines->Append(Дополнительная строка); " );

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

//Перенос всего текста в поле Memo2

{

Memo2->Text=Memo1->Text;

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Append ("Memo2->Text=Memo1->Text;"); }

//---------------------------------------------------------------------------

 

void __fastcall TForm1::RadioButton3Click(TObject *Sender)

{

Memo2->Lines->Add(Memo1->SelText); )//Считывание выделенной строки

 

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Append ("Memo2->Lines->Add(Memo1->SelText); " );

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::RadioButton4Click(TObject *Sender)

{

//Помещение выделенной строки в начало списка

Memo2->Lines->Insert(0,Memo1->SelText);

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Append (" Memo2->Lines->Insert(0,Memo1->SelText);");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton5Click(TObject *Sender)

{

Memo1->Lines->Delete(2);// )//Удаление 3 - строки списка

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Append ( "Memo1->Lines->Delete(2); ");

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::RadioButton6Click(TObject *Sender)

{

Memo1->Lines->Move(1,3);//Замена местами 2- ой и 4-ой строк

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Append (" Memo1->Lines->Move(1,3);");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Memo1->Clear();//Очистка текстового поля Memo1

Memo1->Lines->Add("Этот текст записывается в файл");//Ввод в текстовое поле Memo1 //нового текста

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Add("Memo1->Lines->Add(Этот текст записывается в файл)");

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::RadioButton7Click(TObject *Sender)

{

Memo1->Lines->SaveToFile("n"); // Загружает список в файл.

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Add(" Memo1->Lines->SaveToFile(n)");

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::RadioButton8Click(TObject *Sender)

{

Memo2->Lines->LoadFromFile("n");// Выгружает список из файла.

//Запись оператора в текстовое поле Memo3

Memo3->Lines->Add(" Memo2->Lines->LoadFromFile(n)");

}

//---------------------------------------------------------------------------–

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

компонента Memo

Программный код( Рис.5.6) на базе исходного текста позволяет демонстрировать основные свойства и методы многострочного окна редактирования Memo.Запускающим ключомдля демонстрации каждого свойства(метода)является событиеOnClick (включение радио кнопки),а операторы программного кода ,реализующие то или иное свойство ( метод ) отображаются в окне редактирования Memo3.Листинг программного кода снабжен подробными комментариями и не требует дополнительных пояснений.

Внешний вид интерфейса приложения, позволяющего демонстрировать свойства и методы компонента RichEdit показан на рисунке 5.7,апрограммный код этого приложения приведен на рисунке 5.8.Обозначения, принятые в приложении, и свойства используемых компонентов, установленные во время проектирования, поясняются в таблице 5.4. В приложение включены три многострочных окна редактирования . Первое из них(Memo1) используется хранения исходного текста, второе(Memo2) – для демонстрации операторов кода при выполнении программы , а третье (RichEdit1) – для иллюстрации свойств и методов. На ряду с тремя кнопками типа Button , шестью радио кнопками типа RadioButton в приложении задействован и невидимый компонент- FontDialog1, с помощью которого осуществляется изменение параметров шрифта в окне редактирования RichEdit1. Назначение остальных компонентов приложения понятно из интерфейса (рис.5.7) и не требует дополнительных пояснений.

Таблица 5.4

Компонент Свойство Значение
Форма Caption Основные свойства поля RichEdit
Кнопки     Caption Копирование текста(Button1)
Caption Атрибуты шрифта(Button2)
Caption Передача фокуса(Button3)
Радио кнопки Caption Абзац влево(RadioButton1)
Caption Абзац по центру(RadioButton2)
Caption Абзац вправо(RadioButton3)
Caption Строка в начало текста(RadioButton4)
Сaption Стока на 4-ой позиции(RadioButton5)
Caption Удаление текста(RadioButton6)
Диалог выб.шрифта Name FontDialog1
Метки Caption Поле Memo1
Caption Поле RichEdit1
Caption Строки кода
  Многострочное окно редактиров. Name Memo1
Name Memo2
Name RichEdit1

Другие свойства компонентов принимаются по умолчанию.

 

Рис.5.7. Интерфейс приложения,демонстрирующего свойства и методы

компонента RichEdit

// Программный код приложения,демонстрирующего свойства и методы компонента //RichEdit

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Memo1->Lines->SaveToFile("Text.RTF");//Запись содержимого поля Memo1 в файл

RichEdit1->Lines->LoadFromFile( "Text.RTF");//Загрузка поля RichEdit1 из файла

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add("Memo1->Lines->SaveToFile(Text.RTF)");

Memo2->Lines->Add("RichEdit1->Lines->LoadFromFile( Text.RTF)");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)//Изменение атрибутов шрифта

{

if (FontDialog1->Execute())

RichEdit1->SelAttributes->Assign( FontDialog1->Font);

RichEdit1->SetFocus();

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add(" if (FontDialog1->Execute())");

Memo2->Lines->Add(" RichEdit1->SelAttributes->Assign( FontDialog1->Font);");

Memo2->Lines->Add(" RichEdit1->SetFocus();");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

RichEdit1->Paragraph->Alignment= taLeftJustify;//Перемещение выделенного абзаца влево

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add(" RichEdit1->Paragraph->Alignment= taLeftJustify;");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

RichEdit1->Paragraph->Alignment= taCenter;//Расположение, выделенного абзаца по //центру

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add(" RichEdit1->Paragraph->Alignment= taCenter;");

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::RadioButton3Click(TObject *Sender)

{

RichEdit1->Paragraph->Alignment= taRightJustify;//Расположение, выделенного абзаца //справа

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add("RichEdit1->Paragraph->Alignment= taRightJustify;");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton4Click(TObject *Sender)//Занесение новой строки на //первое в начало текста

{

RichEdit1->Lines->Insert(0,"Новая строка,помещаемая в начало текста");

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add("RichEdit1->Lines->Insert(0,Новая строка,помещаемая в начало текста)");

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::RadioButton5Click(TObject *Sender)// Занесение новой строки на

// 4-ю позицию

{

RichEdit1->Lines->Insert(3,"Строка помещается на 4-ю позицию ");

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add(" RichEdit1->Lines->Insert(3,Строка помещается на 4-ю позицию )");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton6Click(TObject *Sender)

{

RichEdit1->Clear();//Очистка поля RichEdit1

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add(" RichEdit1->Clear();");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

RichEdit1->SetFocus();//Передача фокуса полю RichEdit1

//Занесение операторов программного кода в поле Memo2

Memo2->Lines->Add("SetFocus();”);

}

//---------------------------------------------------------------------------

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

компонента RichEdit

В программный коде( Рис.5.8) при щелчке по кнопке Button1, будет реализован обработчик этого события, и произойдет копирование текста из компонента Memo1 в компонент RichEdit1.При щелчке по кнопке Button2будет реализовано событие по вызову диалога FontDialog1,с помощью которого осуществляется изменениепараметров шрифта. Различные элементы редактирования фрагментов текста реализуются при включении радио кнопок RadioButton1 - RadioButton6.Операторы программногокода ,соответствующие каждому событию отображаются в окне редактирования Memo2.Основные операторы программного кода снабжены подробными комментариями, поясняющими их назначение.

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

 



<== предыдущая лекция | следующая лекция ==>
Окно редактирования Edit | Компоненты выбора из списков – ListBox, CheckListBox, ComboBox


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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