Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Компоненты Memo, RichEdit




Компоненты Memo и RichEdit являются окнами редактирования многострочного текста. Рассмотрим сначала основные отличия компонентов.

В Memo формат (шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font.

RichEdit работает с текстом в обогащенном формате RTF. Атрибуты вновь вводимого фрагмента текста можно задать свойством SelAttributes, которое имеет подсвойства: Color (цвет), Name (имя), Size (размер), Style (стиль) и др. Устанавливаемые атрибуты влияют на выделенный текст или, если ничего не выделено, на атрибуты нового текста, вводимого, начиная с текущей позиции курсора (определяется свойством SelStart). В RichEdit есть также свойство DefAttributes ( доступно только во время выполнения), содержащее атрибуты по умолчанию, которые действуют, пока не изменятся атрибуты в свойстве SelAttributes. Но значения атрибутов в DefAttributes сохраняются и в любой момент могут быть методом Assign присвоены атрибутам свойства SelAttributes, чтобы вернуться к прежнему стилю.

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

 

Alignment Определяет выравнивание текста. Может принимать значения taLeftJustify(влево), taCenter (по центру) или taRightJustify(вправо)
FirstIndent Число пикселов отступа красной строки.
Numbering Управляет вставкой маркеров, как в списках. Может прини-мать значения nsNone − отсутствие маркеров, nsBullet − мар-керы ставятся
LeftIndent Отступ в пикселах от левого поля
RightIndent Отступ в пикселах от правого поля
TabCount Количество позиций табуляции
Tab Значения позиций табуляции в пикселах

 

Значения подсвойств свойства Paragraph можно задавать только в процессе выполнения приложения, например при нажатии кнопки.

Теперь рассмотрим общее основное свойство Memo и RichEditLines, содержащее текст окна в виде списка строк. Начальное значение текста можно установить в процессе проектирования, нажав кнопку с многоточием около свойства Lines в окне Инспектора Объектов. В открывшемся окне Редактор строки списка можно редактировать или вводить текст.

Во время выполнения приложения можно заносить текст в окно с помощью методов свойства Lines.

Весь текст, представленный одной строкой типа String, внутри которой используются разделители типа символов возврата каретки и перевода строки, содержится в свойстве Text.

Доступ к отдельной строке текста, например первой, можно получить так: Memo1->Lines->String[0].

Свойство только для чтения Count указывает число строк в тексте.

Для очистки текста в окне используется функция Clear().

Для занесения новой строки в конец текста окна редактирования пользуются методами Add или Append свойства Lines.

Для работы с файлом используются методы LoadFromFile и SaveToFile. Например,

RichEdit1->Lines->LoadFromFile(“text.rtf”);

RichEdit1->Lines->SaveToFile(“text.rtf”);

Рассмотрим использование компонентов Memo и RichEdit на примере работы с двумерным массивом (матрицей) чисел.

1. Создайте новый проект и сразу сохраните файл модуля и проект под разными именами в созданной ранее папке.

2. В верхней части формы, слева поместите окно LabeledEdit1. У свойства EditLabel зачистите значение подсвойства Caption.

3. Правее поместите кнопку Button1. В свойство Caption впишите Ввод размеров матрицы (<=10).

4. Ниже поместите вторую кнопку Button2 и зачистите у нее свойство Caption.

5. Ниже, на одной горизонтали поместите окна Memo1 и RichEdit1 и сделайте их размеры равными и достаточными для размещения двух матриц из двузначных чисел, размерами 10x10. Для обоих окон установите имя шрифта Courier ( символы этого шрифта равны по ширине).

6. Впишите обработчики щелчков кнопок, как показано ниже:

int k=0,n,m;

void __fastcall TForm1::Button1Click(TObject *Sender)

{ if(k==0) {LabeledEdit1->EditLabel->Caption="Число строк=";

LabeledEdit1->SetFocus();

}

if(k==1) {n=StrToInt(LabeledEdit1->Text);

LabeledEdit1->EditLabel->Caption="Число столбцов=";

LabeledEdit1->SetFocus();

}

if(k==2) {m=StrToInt(LabeledEdit1->Text);

LabeledEdit1->EditLabel->Caption="Размер матрицы: " +

IntToStr(n)+" x "+IntToStr(m);

LabeledEdit1->Text="";

Button2->Caption="Вывод матриц";

}

if(k==0||k==1)k++;

else k=0;

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int x[10][10],i,j;

Memo1->SetFocus();

AnsiString s[10][10],s1[10],s2[10];

Memo1->Clear();

Memo1->Lines->Add("ИСХОДНАЯ МАТРИЦА");

for(i=0;i<n;i++){

s1[i]="";

for(j=0;j<m;j++){

x[i][j]=random(101)-50;

if(x[i][j]<-9) s[i][j]=" "+IntToStr(x[i][j]);

else if(x[i][j]<0||x[i][j]>9) s[i][j]=" "+IntToStr(x[i][j]);

else s[i][j]=" "+IntToStr(x[i][j]);

s1[i]+=s[i][j];}

Memo1->Lines->Add(s1[i]);}

Memo1->Lines->Add("");

Memo1->Lines->Add("ТРАНСПОНИРОВАННАЯ МАТРИЦА");

for(j=0;j<m;j++){

s2[j]="";

for(i=0;i<n;i++)

s2[j]+=s[i][j];

Memo1->Lines->Add(s2[j]);}

RichEdit1->SetFocus();

RichEdit1->Clear();

/*установка выравнивания по центру*/

RichEdit1->Paragraph->Alignment=taCenter;

/*установка жирного шрифта*/

RichEdit1->SelAttributes->Style =

RichEdit1->SelAttributes->Style << fsBold;

RichEdit1->Lines->Add("ИСХОДНАЯ МАТРИЦА");

/*восстановление атрибутов по умолчанию*/

RichEdit1->SelAttributes->Assign(RichEdit1->DefAttributes);

/*установка выравнивания по левому краю*/

RichEdit1->Paragraph->Alignment=taLeftJustify;

for(i=0;i<n;i++)RichEdit1->Lines->Add(s1[i]);

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

/*установка размера шрифта*/

RichEdit1->SelAttributes->Size=12;

/*установка цвета шрифта*/

RichEdit1->SelAttributes->Color= clHotLight;

/*установка стиля шрифта fsItalic*/

RichEdit1->SelAttributes->Style=

RichEdit1->SelAttributes->Style<<fsItalic;

/*установка выравнивания по центру*/

RichEdit1->Paragraph->Alignment=taCenter;

RichEdit1->Lines->Add("ТРАНСПОНИРОВАННАЯ МАТРИЦА");

/*восстановление атрибутов по умолчанию*/

RichEdit1->SelAttributes->Assign(RichEdit1->DefAttributes);

for(j=0;j<m;j++)RichEdit1->Lines->Add(s2[j]);

}

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

7. Сохраните проект и выполните приложение. Убедитесь в работоспособности приложения, используя матрицы разных и одинаковых (повторным нажатием кнопки Вывод матриц) размеров.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 773 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наглость – это ругаться с преподавателем по поводу четверки, хотя перед экзаменом уверен, что не знаешь даже на два. © Неизвестно
==> читать все изречения...

4677 - | 4238 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.