Программирование с использованием              компонентов работы со строками
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Типы данных для работы со строками

Строковые типы данных string и wstring доступны при подключении библиотека работы со стоками: #include <string>

Строковый тип данных AnsiString доступен при подключении библиотеки # include < dstring . h >

Длинная строка типа string и AnsiString

При работе с этим типом данных память выделяется по мере необходимости (динамически) и может занимать всю доступную программе память. Вначале компилятор выделяет для переменной 4 байта, в которых размещается номер ячейки памяти, начиная с которой будет располагаться символьная строка. На этапе выполнения программа определяет необходимую длину цепочки символов и обращается к ядру операционной системы с требованием выделить необходимую память.

Широкая строка типа wstring

Данный тип введен для обеспечения совместимости с компонентами, основанными на OLE-технологии. От типа s tring отличается только тем, что для представления каждого символа используется не один, а два байта.

13.2 Компонент TListBox

Компонент TListBox представляет собой список, элементы которого выбираются при помощи клавиатуры или мыши. Список элементов задается свойством Items, через методы Add, Delete и Insert которого используются для добавления, удаления и вставки строк соответственно. Объект Items (TString) хранит строки, находящиеся в списке. Для определения номера выделенного элемента используется свойство ItemIndex.

 

13.3 Компонент TComboBox

Комбинированный список TComboBox представляет собой комбинацию списка TListBox и однострочного редактора TЕdit, поэтому практически все свойства заимствованы у этих компонентов.

Для работы с окном редактирования используется свойство Text, как в TEdit, а для работы со списком выбора – свойство Items как в TListBox. Существует пять модификаций компонента, определяемых его свойством Style. В модификации csSimple список всегда раскрыт, в остальных он раскрывается после нажатия кнопки справа от редактора.

13.4 Компонент TBitBtn

Компонент TBitBtn расположен на странице Additonal палитры компонентов и представляет собой разновидность стандартной кнопки TB u tton. Его отличительная особенность – наличие растрового изображения на поверхности кнопки, которое определяется свойством G lyph. Кроме того, имеется свойство Kind, которое задает одну из 11 стандартных разновидностей кнопок. Нажатие любой из них, кроме bkCustom и bkHelp закрывает модальное окно и возвращает в программу результат mr*** (например bkOk возвращает mrOk). Кнопка bkClose закрывает главное окно и завершает работу программы.

Обработка событий

Обо всех происходящих в системе событиях, таких как создание формы, нажатие кнопки мыши или клавиатуры и т. д., ядро Windows информирует окна путем посылки соответствующих сообщений. Среда Си++ Builder позволяет принимать и обрабатывать большинство таких сообщений. Каждый компонент содержит обработчики сообщений на странице Events инспектора объектов.

Таблица 13.1 – Наиболее распространенные события у компонентов

Событие Описание события
OnCreate Возникает при создании формы (компонент TForm). В обработчике данного события следует задавать действия, которые должны происходить в момент создания формы, например установка начальных значений

Продолжение таблицы 13.1

OnActivate Форма получает это событие при активации
OnKeyPress Возникает при нажатии кнопки на клавиатуре. Параметр Key имеет тип Char и содержит ASCII-код нажатой клавиши (клавиша Enter клавиатуры имеет код 13, клавиша Esc 27 и т. д.). Обычно это событие используется в том случае, когда необходима реакция на нажатие одной из клавиш
OnKeyDown Возникает при нажатии клавиши на клавиатуре. Обработчик этого события получает информацию о нажатой клавише и состоянии клавиш Shift, Alt и Ctlr, а также о нажатой кнопке мыши. Информация о клавише передается параметром Key, который имеет тип Word
OnKeyUp Является парным событием для OnKeyDown и возникает при отпускании ранее нажатой клавиши
OnClick Возникает при нажатии кнопки мыши в области компонента
OnDblClick Возникает при двойном нажатии кнопки мыши в области компонента

Для создания обработчика события необходимо раскрыть список компонентов в верхней части окна инспектора объектов и выбрать необходимый компонент. Затем, на странице Events, нажатием левой клавиши мыши, выбрать обработчик и дважды щелкнуть по его правой (белой) части. В ответ C ++ Builder активизирует окно текста программы и покажет заготовку процедуры обработки выбранного события.

Каждый компонент имеет свой набор обработчиков событий, однако некоторые из них присущи большинству компонентов. Наиболее часто применяемые события представлены в таблице 13.1.

Пример разработки программы с использованием строк

Задание: написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк и работы с ними использовать TComboBox. Ввод строки заканчивать нажатием клавиши Enter. Для выхода из программы использовать кнопку Close.

Панель диалога будет иметь вид, представленный на рисунке 13.1.

Текст программы приведен ниже.

 

TComboBox
TBitBtn
TListBox

Рисунок 13.1 – Внешний вид приложения

# include < dstring . h >

void __fastcall TForm1::FormActivate(TObject *Sender)

{  ComboBox1->SetFocus();  // Передача фокуса ComboBox1

}

void __fastcall TForm1::ComboBox1KeyPress(TObject *Sender, char &Key)

{ if ( Key ==13)

 { // Если нажата клавиша Enter , то...

// Строка из окна редактирования

ListBox 1-> Items -> Add ( ComboBox 1-> Text );

ComboBox1->Items->Add(ComboBox1->Text);

ComboBox 1-> Text ="";// Очистка окна редактирования

 }

}

void __fastcall TForm1::ListBox1Click(TObject *Sender)

{ int n =0;         // Содержит число слов

int ind =0;

int nst = ListBox 1-> ItemIndex ;//Определение номера выбранной строки

// Занесение выбранной строки в переменную st

AnsiString st=ListBox1->Items->Strings[nst];

 for (int i=1; i<=st.Length(); i++)

{// Просмотр всех символов строки st

switch ( ind )

{ case 0: if ( st [ i ]!=32)

   { // Если встретился символ после пробела

   ind =1;

   n ++;// Число слов увеличивается на единицу

   break ;

   }

case 1: if ( st [ i ]==32) ind =0;//Если встретился пробел //после символов

  break ;

}

}

// Вывод числа слов в Label 3

Label 2-> Caption ="Число слов в выделенной строке: "+ IntToStr ( n ); 

}

Контрольные вопросы

1. Чем отличаются строка типа string и AnsiString  в Си++Builder?

2. Каков состав проекта для разработки приложений?

3. Как размещаются компоненты на форме?

4. Какие настройки необходимо выполнить при работе с формой?

5. Какие действия необходимо выполнить для использования компонента TListBox?

6. Какие действия необходимо выполнить для использования компонента TComboBox?

7. Какие действия необходимо выполнить для использования компонента TBitBtn?

8. Что такое обработчик событий, как его использовать?


14 Разработка приложений
с использованием диалогов для выбора
файлов и главного меню




Дата: 2019-02-02, просмотров: 233.