logo
Шпора по информатике / 002

18.1 Редактор кода

В лекции 17 кратко рассмотрели, как с помощью компонентов создаются объекты в основном окне приложения, т.е. на форме.

Подробнее эти вопросы будут изучаться при выполнении лабораторной работы №5.

После создания объектов на форме следует написать методы, т.е. тексты функций на С++ для обработки событий.

Для этого нужен Редактора кода.

Код - это текст на С++. Редактор кода позволяет просматривать, создавать, редактировать обработчики событий и другие функции.

Рассмотрим три способа его использования.

1. Для написания методов и функций используется окно Редактора кода , расположенное под окном формы. Это окно становится активным, если щелкнуть по нему мышью.

2. Соответствие между событием и методом устанавливается на вкладке Events (События) Инспектора объектов. После указания имени метода для события на экране появляются заголовок функции с этим именем и фигурные скобки. Внутри этих скобок нужно записать текст на С++.

3. Для получения заголовка некоторых методов можно также два раза щелкнуть по объекту, например, по форме или кнопке. При этом на форме должна быть сетка, которая существует только в процессе проектирования программы.

18.2 Операторы ввода-вывода для Windows-программ

При программировании ввода-вывода в Вuilder нужны классы, объекты,

а также указатели на объекты.

Напомним, как используются в программах указатели на объекты. В разделе 15.3 было показано, что при обращении к полю или методу, т.е. к любому элементу класса, обязательно указывается либо имя объекта, либо указатель на этот объект, причем для имени объекта используется точка, а для указателя - стрелка -> .

Следовательно, при работе с объектами используются составные имена

для их полей и методов. Это правило очень важно для системы Builder.

В системе Builder при разработке формы для программы на ней размещаются различные объекты стандартных классов, объявления которых система Builder формирует автоматически, например,

TButton * Button1; TEdit *TEdit1 ; TEdit * Edit2; TLabel * Label1;

Здесь созданы 4 указателя на стандартные объекты. Имея указатель на объект, можно обращаться к полям и методам класса, например, используя такие составные имена

Button1-> Caption, Edit2 -> Text , Label1->Caption,

либо эти же имена с добавлением класса

Button1-> TButton:: Caption, Edit2 -> TEdit::Text , Label1->TLabel::Caption

Здесь Caption, Теxt - это свойства компонентов, иначе поля объектов.

Следует отметить, что для системы Builder характерно использование указателей, а не имён объектов. Но для упрощения чтения ваших программ слово "указатель" иногда можно опускать и считать для простоты имя перед стрелкой именем объекта.

Обратите внимание, что Инспектор объектов ( это левая часть экрана), демонстрируя свойства и методы, показывает в своём заголовке имя объекта и имя класса, разделяя их двоеточием, например, Button1 : TButton .

В программе при вводе-выводе указываются объект и свойство,

например, Button1-> Caption.

В наших программах на С++ для ввода-вывода на экран использовались операторы cin>> и cout<< с именами потоков cin, cout. В Win - программах операторы cin, cout для взаимодействия с экраном использовать нельзя,

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

Области ввода или вывода есть во многих компонентах. Вводимая или выводимая информация является значением свойства конкретного объекта.

Например, для каждого объекта класса TButton можно сделать надпись. Это будет надпись на кнопке. Текст надписи задаётся свойством Сaption.

Значения свойствам при вводе- выводе можно присваивать и в Инспекторе объектов, и

в программе, например,

Label1->Caption = " My results:" ; // вывод надписи на объект Label1 ;

Отметим, что для упрощения далее не будем учитывать различие в терминах "поле"

и "свойство", т.е. будем использовать эти слова как эквиваленты, хотя различия есть.

Области ввода-вывода принимают только строки, представленные следующим образом:

- массив символов, заканчивающийся символом '\0';

- строка с указателем (char *) , например,

char s1[ ] = "aaaa"; char *s2 = "bbbbb";

- строка класса AnsiString или String, например,

AnsiString s3 ("ccccc"); String s4 ("ddd");

- в старших версиях Builder можно выводить и численные значения,

например, Edit1 -> Text = 2.7;

Служебные слова AnsiString и String эквивалентны, т.к. в одном из стандартных заголовочных файлов есть команда препроцессора

#define String AnsiString

Это означает, что до компиляции первое слово будет заменено вторым во всем тексте.

Следует обратить внимание на заглавную букву S в слове String. Если написать

string, то это будет другой класс и их нельзя путать. Например, начальный символ строки класса string имеет номер 0, а для String этот номер равен 1, как в Паскале. Ещё пример различия: для строк класса string можно использовать операции << , >> ,

а для String нельзя.

При вводе дробных чисел в окна систем Windows и Builder следует использовать запятую вместо точки, т.к. этот вид обычно задан в системном файле win.ini.

18.3 Использование компонентов Label , Edit для ввода-вывода

В качестве примера рассмотрим свойства двух компонентов Label, Edit,

соответствующих третьей и четвертой кнопкам страницы Standard палитры компонентов. В классе TLabel есть надпись без возможности редактирования - это свойство Caption. В классе TEdit есть окно редактирования для ввода-вывода -

это свойство Text . Значения полей Caption и Text всегда выводятся на экран при работе с указанными компонентами.

Присвоить значения этим полям можно двумя способами:

1) программно, 2) при создании формы с помощью Инспектора объектов.

Примеры ввода-вывода в программе:

mystrk = Edit1 -> Text; // ввод строки mystrk из окна Edit1 ;

Edit2 -> Text = mystrk; // вывод строки mystrk в окно Edit2 .

Label1->Caption = " My results:" ; // вывод надписи

В Builder6 есть компонент LabeledEdit, являющийся объединением Еdit и Label, т.е. окно с надписью. Есть и более сложные области редактирования, например, в классах TMemo, TListBox.