§ 16. Компоненты для работы со списками строк
Сайт: | Профильное обучение |
Курс: | Информатика. 11 класс (Повышенный уровень) |
Книга: | § 16. Компоненты для работы со списками строк |
Напечатано:: | Гость |
Дата: | Суббота, 4 Май 2024, 16:43 |
16.1. Класс TString
При создании приложений часто приходится работать со списками строк. В C++ Builder для этого используются различные компоненты, такие как Memo, RichEdit, ListBox, ComboBox, CheckListBox, RadioGroup и другие. Каждый из этих компонентов содержит свойство, принадлежащее классу TString. Класс TString создан специально для работы со списками строк. Некоторые методы класса TString приведены в примере 16.1. Для определения количества строк в списке используется свойство Count. Нумерация строк в списке начинается с нуля. Обращаться к отдельной строке набора можно как к элементу массива, указав индекс в квадратных скобках (Strings[3]). Индекс выделенной строки в компонентах выбора из списков определяется свойством ItemIndex. С помощью методов данного класса можно добавлять и удалять строки, менять их местами, сортировать строки, считывать и записывать строки в файл, осуществлять поиск строки в наборе. |
Пример 16.1. Некоторые методы класса TString:
Для работы со стоками используется тип String. Тип String — тип, поддерживаемый средой C++ Builder, значением такой строки является строка AnsiString. Нумерация символов в такой строке начинается с 1. Некоторые методы работы с типом String приведены в приложении.
|
16.2. Компонент Мемо
Компонент многострочный редактор Memo предназначен для ввода, вывода и редактирования многострочных текстов. На панели компонентов Standard компонент Memo изображен в виде , имя объекта — Memo. Компонент Memo, помещенный на форму, получает имя MemoN, где N — номер 1, 2, 3… (пример 16.2). Данный компонент, так же как и компонент, Edit снабжен функциями, присущими редакторам: копировать, вырезать, вставить, отмена последней команды редактирования. Некоторые свойства компонента приведены в примере 16.3. Основное свойство компонента Memo — свойство Lines, содержащее текст окна в виде списка строк и имеющее тип TStrings. Начальное значение списка строк можно задать на этапе проектирования. Для этого нужно нажать кнопку около свойства Lines в окне инспектора объектов. При этом откроется окно редактирования списков строк (String List Editor) (пример 16.4). При выполнении программы для изменения содержимого окна компонента Memo применяются методы класса TString (см. пример 16.1). Пример 16.5. Изменить проект Калькулятор из упражнения 3 (§6). Заменить компонент LabeledEdit3 (для вывода результата) компонентом Memo. Вести в компоненте Memo «журнал» действий: записывать каждый выполненный пример. Добавить кнопки: «Сохранить», нажав на которую, можно сохранить «журнал» в файл и «Очистить», нажав на которую можно очистить содержимое окна Memo. Этапы выполнения задания
Просмотреть содержимое сохраненного файла можно с использованием программы Блокнот. |
Пример 16.2. Компонент Memо на форме: Пример 16.3. Некоторые свойства компонента Memo:
Если включена горизонтальная полоса прокрутки, то игнорируется свойство WordWrap, которое отвечает на перенос слов на новую строку (перенос строк осуществляется только на экране, новые строки в список строк не добавляются). Пример 16.4. Окно редактирования списка строк: Пример 16.5. Форма на этапе проектирования: Обработчик события OnClick для кнопки «Сумма».
Обработчик события OnClick для кнопки «Сохранить»:
Обработчик события OnClick для кнопки «Очистить»:
Работающее приложение: |
16.3. Компонент ListBox
Компонент список — ListBox предназначен для выбора одной или нескольких строк в списке. На панели компонентов Standard компонент список изображен в виде , имя объекта — ListBox. Компонент ListBox, помещенный на форму, получает имя ListBoxN, где N — номер 1, 2, 3… (пример 16.6). Основное свойство компонента ListBox, содержащее текст окна в виде списка строк — свойство Items, принадлежит к типу TSring. Начальное значение списка строк можно задать на этапе проектирования. Для этого нужно нажать кнопку около свойства Items в окне инспектора объектов. При этом откроется окно редактирования списков строк (String List Editor). Это же окно использовалось для заполнения строк компонента Memo. При выполнении программы для изменения содержимого окна компонента ListBox применяются методы класса TString. Список может иметь несколько столбцов. При заполнении текущего столбца строками донизу, очередная строка будет отображаться в новом столбце. Некоторые свойства компонента ListBox приведены в примере 16.7. Пример 16.8. Создать список времен года. При выборе времени года перечислять месяцы, относящиеся к этому времени года. Этапы выполнения задания
Компонент ListBox автоматически добавит полосу прокрутки, если количество строк не помещается по высоте компонента. Если количество столбцов не установлено (значение Columns по умолчанию равно 0), то возникает вертикальная полоса прокрутки. Если количество столбцов в компоненте больше нуля, то возникает горизонтальная полоса прокрутки и данные добавляются в новый столбец. Высота каждой строки равна ItemHeight. Если нужно, чтобы при добавлении новой строки полоса прокрутки точно не возникла, этот размер нужно добавить к высоте компонента. |
Пример 16.6. Компонент ListBox на форме: Пример 16.7. Некоторые свойства компонента ListBox:
Пример 16.8. Форма на этапе проектирования: Обработчик события OnClick для компонента ListBox.
Работающее приложение: |
16.4. Компонент ComboBox
Компонент поле со списком — ComboBox представляет собой вариант списка с присоединенным к нему дополнительным полем, в котором отображается выбранный элемент списка. В это поле может быть введен текст. На панели компонентов Standard компонент поле со списком изображен в виде , имя объекта ComboBox. Компонент ComboBox, помещенный на форму, получает имя ComboBoxN, где N — номер 1, 2, 3… (пример 16.9). Основное свойство компонента ComboBox, так же как и у компонента ListBox — это свойство Items, принадлежащее к типу TSring. Начальное значение списка строк можно задать в окне редактирования списков строк (кнопка около свойства Items в окне инспектора объектов). При выполнении программы для изменения содержимого окна компонента ComboBox применяются методы класса TString. Компонент ComboBox не допускает множественного выбора и размещения списка в несколько столбцов. Свойства ItemIndex и Sorted у него такие как у компонента ListBox. У компонента определены несколько стилей отображения (пример 16.10). Основное событие компонента — OnChange. Пример 16.11. В текстовых файлах 11А.txt, 11Б.txt, 11В.txt содержатся списки актива классов. При выборе класса должен загрузиться список актива. Этапы выполнения задания
|
Пример 16.9. КомпонентComboBox на форме: Пример 16.10. Стиль изображения компонента ComboBox определяется его свойством Style. Некоторые значения свойства Style:
Пример 16.11. Форма на этапе проектирования: Обработчик события OnChange для компонента ComboBox.
Работающее приложение: Пример 16.12. Создание текстового файла: |
16.5. Компонент CheckListBox
Компонент список с флажками — CheckListBox представляет собой вариант списка с индикаторами. Возле каждой строки списка имеется индикатор-флажок, который пользователь может переключать. На панели компонентов Additional компонент список с флажками изображен в виде , имя объекта CheckListBox. Компонент CheckListBox, помещенный на форму, получает имя CheckListBoxN, где N — номер 1, 2, 3… (пример 16.13). Основное свойство компонента CheckListBox, так же как и у компонентов ListBox и ComboBox — это свойство Items, принадлежащее к типу TSring. Состояния индикаторов списка с флажками определяют свойства State и Checked, рассмотренные для компонента флажок (CheckBox). Эти свойства можно рассматривать как массивы, каждый элемент которого соответствует индексу строки. При изменении пользователем состояния индикатора возникает событие OnClickCheck, которое можно использовать для написания обработчика результатов изменения. Пример 16.14. В текстовом файле books.txt хранятся названия книг, имеющихся в книжном магазине, в текстовом файле price.txt — цены этих книг. Создать приложение, в котором пользователь сможет выбирать книги для покупки. При изменении выбора должна подсчитываться сумма покупки. Этапы выполнения задания
|
Пример 16.13. Компонент CheckListBox на форме: Пример 16.14. Форма на этапе проектирования: Обработчик события OnCreat для формы.
Обработчик события OnClickCheck для компонента CheckListBox1:
Работающее приложение: Содержимое файлов: |
16.6. Компонент RadioGroup
Компонент группа переключателей — RadioGroup представляет собой вариант списка с индикаторами. Возле каждой строки списка имеется переключатель, один из переключателей может быть выделен. На панели компонентов Standard компонент группа переключателей изображен в виде , имя объекта — RadioGroup. Компонент RadioGroup, помещенный на форму, получает имя RadioGroupN, где N — номер 1, 2, 3… (пример 16.15). Переключатели в компоненте RadioGroup задаются перечислением их названий. Названия хранятся в свойстве Items, принадлежащем к типу TSring. Компонент обладает свойствами Columns и ItemIndex, как и некоторые из рассмотренных ранее компонентов работы со списками строк. Пример 16.16. Создать приложение, позволяющее вычислить значение одной их тригонометрических функций для введенного аргумента. Этапы выполнения задания
|
Пример 16.15. Компонент RadioGroup на форме: Пример 16.16. Форма на этапе проектирования: Обработчик события OnClick для компонента RadioGroup1.
Работающее приложение: |
Вопросы к параграфу
1. Какие компоненты C++ Builder могут работать со списками строк? 2. Какой класс предназначен для обработки списков строк? 3. Какое свойство позволяет определить количество строк в списке? 4. Как получить доступ к отдельной строке списка? 5. Какие методы класса TSting позволяют сохранять списки в файле и загружать их из файла? 6. Какой метод класса TSting позволяет добавить строку в список? 7. Какой метод класса TSting позволяет удалить строку из списка? 8. Для чего предназначен компонент многострочный редактор Memo? 9. Какое свойство компонента Memo работает со списком строк? 10. Назовите компоненты выбора строк из списка. |
Упражнения
1. Добавьте в проект из примера 16.5 следующие возможности:
- Загрузка журнала из файла.
- Сделайте кнопки доступными только после ввода двух чисел.
- Установите для компонента Memo1 вертикальную полосу прокрутки, которая должна появляться после ввода не менее 4 строк.
2. В текстовом файле хранятся целые числа. Файл загрузить в список строк. При выборе числа из списка выдать его название на русском (или другом) языке.
3. Измените проект из примера 16.11. Сначала нужно осуществить выбор параллели. Список классов на каждой параллели должен храниться в текстовом файле. Добавьте возможность редактирования списка класса и сохранение изменений. Примерный вид формы.
4. В проект из примера 16.14 добавьте еще один список, в котором укажите количество книг каждого наименования. Добавьте кнопку «Закончить выбор», при нажатии на которую уменьшается количество купленных книг и обнуляется сумма текущей покупки. Если количество книг стало равным нулю, книга должна удалиться из списка.
5. Измените проект из примера 16.16 так, чтобы можно было вычислять значения не только тригонометрических функций, но и других: возведение в квадрат и куб, извлечение квадратного и кубического корней, вычисление логарифма и др. Для тригонометрических функций предусмотрите возможность задания аргумента функции в градусах (используйте компонент CheckBox). Осуществляйте проверку области определения функции с выводом соответствующих сообщений.