- •Министерство образования российской федерации
- •Северо-западный государственный заочный технический университет
- •В. Л. Макаров
- •Прикладное программирование
- •Конспект лекций с. Петербург 2003г
- •Окно формы. Форма является основой большинства приложений , так как на ней размещаются другие управляющие компоненты. Внешний вид окна формы показан на рисунке 1.3.
- •3.Основные свойства, методы и события формы
- •Компоненты vcl
- •5.1. Кнопки управления
- •5.2. Окно редактирования Edit
- •5.3 Многострочные окна редактирования Memo и RichEdit
- •5.4 Компоненты выбора из списков – ListBox, CheckListBox, ComboBox
- •5.5 Элемент управления Label (надпись или метка)
- •5.6 Элемент управления RadioButton (Радиокнопка)
- •5.7 Полосы прокрутки (ScrollBar)
- •5.9 Компонент Timer(Таймер)
- •5.10 Компонент StringGrid ( таблица строк)
- •5.11 Компонент Chart – графики и диаграммы
- •5.12 Компонент f1Book
- •6. Создание меню
- •7. Системные диалоги
- •7.1 Диалоги открытия и сохранения файлов
- •7.2 Диалог выбора шрифта(компонент FontDialog )
- •7.3 Диалог выбора цвета(компонент ColorDialog )
- •7.4Диалоги поиска и замены текста(компоненты FindDialog и ReplaceDialog )
- •8.1 Структура головного файла проекта
- •8.2 Структура файлов модулей форм
5.2. Окно редактирования Edit
Этот элемент управления используется для отображения, ввода и редактирования однострочных текстов. В компоненте Edit вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать в процессе проектирования или задавать программно. Перенос строк текста невозможен, поэтому текст, не помещающийся по длине в окно, остается невидимым. Свойство AutoSize позволяет автоматически подстраивать высоту (но не ширину) окна под размер текста. При вводе в окно числовой информации происходит ее автоматическое преобразование в строку, поэтому оператор
Edit1 -> Text = 5.0/2;
будет воспринят компилятором нормально и приведет к появлению в окне числа 2,5. Однако, при выводе из окна числовой информации надо использовать функции
StrToFloat( ) , для преобразования строки в число с плавающей запятой, и StrToInt( ), для преобразования строки в целочисленное значение. Если вводимый текст содержит недопустимые символы, то функции преобразования генерируют исключение Econver Error. Поэтому в программе необходимо предусмотреть обработку этого исключения. Например, фрагмент кода :
int A;
………..
try
{
A = StrToInt(Edit1 -> Text);
}
Catch(Econver Error &)
{
ShowMessage(“Вы ввели ошибочное число; повторите ввод”);
}
обеспечивает пользователю сообщение об ошибке ввода и предотвращает ошибочные вычисления.
Управлять поведением выделенного фрагмента текста в окне редактора можно с помощью свойств SelLength, SelStart, SelText, , определяющих соответственно длину выделенного текста, позицию перед первым символом выделенного текста и сам выделенный текст. Например, если в окне имеется текст вида :”Выделение текста “ и в нем пользователь выделил слово “ текста” , то SelLength= 6, SelStart = 10 и SelText=
“ текста”. Если выделенного текста нет , то свойство SelStart просто определяет текущее положение курсора . Свойство MaxLength определяет максимальную длину вводимого текста, при MaxLength =0 длина текста не ограничена. В противном случае значение MaxLength указывает максимальное число символов, которое пользователь может вводить в компонент. Свойство PasswordChar позволяет превращать окно редактирования в окно ввода пароля. При его использовании в окне редактора указываются специальные символы, замещающие фактический текст, вводимый пользователем . На ряду с рассмотренными , часто используются следующие свойства компонента:
Name – задает имя редактора в программном коде;
BorderStyle – определяет тип рамки, используемой компонентом;
Color - указывает цвет фона компонента;
Font - определяет атрибуты шрифта;
ReadOnly - указывает, может ли пользователь изменять тест в компоненте.
Методы компонента Edit. Среди наиболее используемых методов этого компонента следует указать следующие:
Clear - удаляет текст из окна;
SelectAll - выделяет весь текст в окне редактирования;
ClearSelection - удаляет текст, выделенный в окне;
CopyToClipboard - копирует выделенный текст в Clipboard ;
PasteFromClipboard - переносит в окно текст из буфера Clipboard.
Основным событием редактора является событие OnChange. Оно происходит каждый раз , когда пользователь вставляет, заменяет или удаляет символы из строки текста. Другие важные события OnEnter и OnExit. Первое из них происходит, когда компонент получает фокус ввода, а второе – когда компонент его лишается.
Использование ряда свойств и методов окна редактирования Edit, показано в приложении, интерфейс и программный код которого приведены на рисунках 5.3 и 5.4.
Обозначения, принятые в приложении, и свойства используемых компонентов, установленные во время проектирования, поясняются в таблице 5.2.
Таблица 5.2
-
Компонент
Свойство
Значение
Форма
Caption
Основные свойства редактора Edit
Кнопка
Name
Button1
Caption
Введите текст
Радио кнопки
Caption
Ввод текста(RadioButton1)
Caption
Считывание текста(RadioButton2)
Caption
Изменение парам. шрифта(RadioButton3)
Caption
Счит.выдел.части текста(RadioButton4)
Caption
Замена выдел.части текста(RadioButton5)
Сaption
Запись(RadioButton6)
Caption
Считывание(RadioButton7)
Окно редактирования
Name
Edit1
Метка
Caption
Поле ввода
Окно редактирования
Name
Edit2
Метка
Caption
Поле вывода
Многостр.окно редак.
Name
Memo1
Графическая кнопка
Name
BitBtn1
Другие свойства компонентов принимаются по умолчанию.
Рис.5.3 Интерфейс приложения, характеризующего свойства компонента Edit
Интерфейс приложения(Рис.5.3) содержит форму на которой размещены радио кнопки ,для изменения свойств компонента, кнопка типа Button, для ввода текста при считывании и записи информации в буфер обмена(ClipBoard),графическая кнопка типа BitBtn для закрытия программы, два однострочных окна редактирования, которые используются как поля ввода и вывода текстовой информации, а так же многострочное окно редактирования Memo1, для демонстрации операторов кода при выполнении программы.
//Программный код, характеризующий свойства компонента Edit
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)// Ввод текста
{
Edit1->Text="Ввод текста";
Memo1->Text="Edit1->Text=Ввод текста"; //Занесение текста кода в поле Memo1
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender)//Считывание текста
{
Edit2->Text=Edit1->Text;
Memo1->Text= " Edit2->Text=Edit1->Text; "; //Занесение текста кода в поле Memo1
}
//---------------------------------------------------------------------------
void_fastcall TForm1::RadioButton3Click(TObject *Sender)//Изменение параметров текста
{
Edit1->Font->Name="Times New Roman";
Edit1->Font->Size=12;
Edit1->Font->Color=clRed;
Memo1->Text= " Edit1->Font->Name=Times New Roman";//Занесение текста кода в поле Memo1
Memo1->Lines->Append("Edit1->Font->Size=12;" );
Memo1->Lines->Append("Edit1->Font->Color=clRed;");
}//------------------------------------------------------------------
void __fastcall TForm1::RadioButton4Click(TObject *Sender)//Считывание выделенной //части текста
{
Edit2->Text= Edit1->SelText;
Memo1->Text= "Edit2->Text= Edit1->SelText; "; //Занесение текста кода в поле Memo1
}
//---------------------------------------------------------------------------
void_fastcall TForm1::RadioButton5Click(Tobject *Sender)//Замена выделенной
//части текста
{
Edit1->SelText="Замена";
Memo1->Text= "Edit1->SelText=Замена;"; //Занесение текста кода в поле Memo1
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)//Ввод текста в окно редактора
{
Edit1->Text="Текст,который заносится в Clipboard()";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton6Click(TObject *Sender)//Выделение текста, его //копирование в Clipboard и удаление текста из окна редактора Edit1
{
Edit1->SelectAll();
Edit1->CopyToClipboard();
Edit1->Clear();
//Занесение текста кода в поле Memo1
Memo1->Text= "Edit1->SelectAll();Edit1->CopyToClipboard();Edit1->Clear();";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton7Click(TObject *Sender)
//Очистка окна редактора Edit2 и ввод в него текста из Clipboard
{
Edit2->Clear();
Edit2->PasteFromClipboard();
//Занесение текста кода в поле Memo1
Memo1->Text= "Edit2->Clear();Edit2->PasteFromClipboard(); ";
}
//---------------------------------------------------------------------------
Рис.5.4 Программный код, характеризующий свойства компонента Edit
Программный код( Рис.5.4) позволяет демонстрировать основные свойства и методы однострочного окна редактирования Edit. Запускающим ключом для демонстрации каждого свойства(метода) является событие OnClick (включение радио кнопки ), а операторы программного кода ,реализующие то или иное свойство ( метод ) отображаются в окне редактирования Memo1. Событие OnClick , связанное с включением кнопки Button1, используется для ввода текста в компонент Edit1. Этот текст затем применяется для демонстрации методов считывания и записи информации в буфер обмена (ClipBoard).Листинг программного кода снабжен подробными комментариями и не требует дополнительных пояснений.