§ 16. Кампаненты для работы са спісамі радкоў
Сайт: | Профильное обучение |
Курс: | Інфарматыка. 11 клас (Павышаны ўзровень) |
Книга: | § 16. Кампаненты для работы са спісамі радкоў |
Напечатано:: | Гость |
Дата: | Воскресенье, 28 Апрель 2024, 13:10 |
16.1. Клас TString
Пры стварэнні дадаткаў часта даводзіцца працаваць са спісамі радкоў. У C++ Builder для гэтага выкарыстоўваюцца розныя кампаненты, такія як Memo, RichEdit, ListBox, ComboBox, CheckListBox, RadioGroup і інш. Кожны з гэтых кампанентаў утрымлівае ўласцівасць, якая належыць класу TString. Клас TString створаны спецыяльна для працы са спісамі радкоў. Некаторыя метады класа TString прыведзены ў прыкладзе 16.1. Для вызначэння колькасці радкоў у спісе выкарыстоўваецца ўласцівасць Count. Нумарацыя радкоў у спісе пачынаецца з нуля. Звяртацца да асобнага радка набору можна як да элемента масіва, паказаўшы індэкс у квадратных дужках (Strings[3]). Індэкс выдзеленага радка ў кампанентах выбару са спісаў вызначаецца ўласцівасцю ItemIndex. З дапамогай метадаў дадзенага класа можна дадаваць і выдаляць радкі, мяняць іх месцамі, сартаваць радкі, счытваць і запісваць радкі ў файл, ажыццяўляць пошук радку ў наборы. |
Прыклад 16.1. Некаторыя метады класа TString:
Для працы з радкамі выкарыстоўваецца тып 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. Кампанент Меmо на форме: Прыклад 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). Здзяйсняйце праверку вобласці вызначэння функцыі з вывадам адпаведных паведамленняў.