§ 18. Кампаненты для работы з табліцамі
Сайт: | Профильное обучение |
Курс: | Інфарматыка. 11 клас (Павышаны ўзровень) |
Книга: | § 18. Кампаненты для работы з табліцамі |
Напечатано:: | Гость |
Дата: | Суббота, 19 Апрель 2025, 12:39 |
18.1. Кампанент StringGrid
Кампанент табліца радкоў — StringGrid прызначаны для апрацоўкі даных, прадстаўленых у таблічнай форме. На панэлі кампанентаў Additional кампанент StringGrid намаляваны ў выглядзе Кампанент StringGrid прызначаны ў першую чаргу для адлюстравання ў табліцы тэкставай інфармацыі. Аднак яго можна выкарыстоўваць і для адлюстравання графічнай інфармацыі. Уласцівасці кампанента прыведзены ў прыкладзе 18.2. За многія ўласцівасці кампанента StringGrid адказвае ўласцівасць Options (гл. Дадатак). Даныя табліцы могуць быць даступныя, як толькі для чытання, так і для рэдагавання. Пры ўстаноўцы кампанента на форму, ячэйкі табліцы ў першым слупку і першым радку фіксаваныя і недаступныя для рэдагавання, астатнія ячэйкі можна рэдагаваць. Фіксаваныя ячэйкі выкарыстоўваюцца ў асноўным для подпісаў загалоўкаў слупкоў і радкоў. Пры з'яўленні палос пракруткі фіксаваныя ячэйкі застаюцца на месцы. У кампаненце StringGrid рэалізавана адрасаванне кожнай асобнай ячэйкі па яе нумары слупка і радка[1]. Змесціва ячэйкі (i, j), дзе i — нумар слупка, j — нумар радка, мае выгляд: StringGrid1 -> Cells[i][j] Нумары слупкоў і радкоў пачынаюцца з 0. Слупок і радок з нумарам нуль па змоўчанні належаць фіксаванай зоне. У момант выбару карыстальнікам ячэйкі надыходзіць падзея OnSelectCell. У апрацоўшчык гэтай падзеі перадаюцца нумары слупка (ACol) і радка (ARow) выдзеленай ячэйкі, а таксама лагічны параметр CanSelect — дапушчальнасць выбару. Параметр CanSelect можна выкарыстоўваць для забароны вылучэння ячэйкі, задаўшы яго значэнне false. А параметры ACol і ARow могуць выкарыстоўвацца для нейкай рэакцыі праграмы на вылучэнне карыстальніка. Прыклад 18.3. Стварыць праект, у якім пры выбары ячэйкі табліцы, у ёй будзе прапісвацца адрас. Этапы выканання задання
Кампанент StringGrid можна ўжываць для вырашэння задач, якія выкарыстоўваюць двухмерныя масівы. Прыклад 18.4. Стварыць праект, у якім будзе вылічвацца сума элементаў двухмернага масіва. Элементы масіва задаюцца выпадковым чынам. Этапы выканання задання
Часам пры працы патрабуецца ачысціць усе ячэйкі табліцы ад тэксту. Метаду, які гэта робіць для табліцы, няма. Можна ў цыкле звярнуцца да кожнай ячэйцы і прысвоіць ёй значэнне пустога радка або выкарыстоўваць метад, які ачышчае значэнне слупка: for (int i = StringGrid1 -> FixedCols; [1] Звярніце ўвагу на тое, што першым паказваецца нумар слупка, а другім — нумар радка (па аналогіі з адрасаваннем ячэек у Excel) |
Прыклад 18.1. Кампанент StringGrid на форме: Прыклад 18.2. Уласцівасці кампанента StringGrid.
Уласцівасці Color і FixedColor працуюць, калі ва уласцівасці DrawingStyle абрана значэнне gdsClassic. Пры неабходнасці ўстаноўкі шырыні і вышыні асобных слупкоў і (або) радкоў выкарыстоўваюць уласцівасці:
Значэнні для гэтых уласцівасцей наладжваюцца ў апрацоўшчыку падзеі OnCreate для формы, гэтак жа, як і надпісы загалоўкаў, якія размяшчаюцца ў радках і слупках фіксаванай зоны табліцы. Прыклад 18.3. Форма на этапе праектавання: Апрацоўшчык падзеі OnCreate для формы.
Апрацоўшчык падзеі OnSelectCell для табліцы.
Дадатак у час працы: Прыклад 18.4. Форма на этапе праектавання: Апрацоўшчык падзеі OnClick для кнопкі BitBtn1.
Апрацоўшчык падзеі OnClick для кнопкі BitBtn2.
Дадатак у час працы: |
18.2. Кампанент DrawGrid
Кампанент DrawGrid выкарыстоўваецца для стварэння табліцы, якая можа ўтрымліваць графічныя малюнкі. На панэлі кампанентаў Additional кампанент DrawGrid намаляваны ў выглядзе Гэты кампанент падобны кампаненту StringGrid, які з'яўляецца наследнікам ад DrawGrid. У DrawGrid прысутнічаюць усе ўласцівасці, метады, падзеі кампанента StringGrid, акрамя тых, што адносяцца да тэксту, г. зн. акрамя уласцівасцей Cells, Cols, Rows. Кампанент DrawGrid (таксама StringGrid) мае канву, на якой можна размяшчаць малюнкі. Для занясення малюнкаў у ячэйкі DrawGrid выкарыстоўваюць апрацоўшчык падзей OnDrawCell. Гэта падзея надыходзіць для кожнай ячэйкі табліцы ў момант яе перамалёўкі. Размяшчаючы ў апрацоўшчыку падзеі OnDrawCell праграмны код, можна размалёўваць ячэйкі, выводзіць малюнкі і рабіць тэкставыя надпісы. Табліца сама пастаянна выклікае гэтую падзею для таго, каб адмаляваць свае ячэйкі. Прамаляваць малюнак можна, выкарыстоўваючы метады канвы StratchDraw або CopyRect. Апрацоўшчык OnDrawCell мае параметры (прыклад 18.6). Прыклад 18.7. Стварыць праект, у якім пры выбары ячэйкі табліцы, будзе альбо зафарбоўвацца ячэйка, альбо прамалёўвацца малюнак. Калі сума нумара радка і нумар слупка няцотныя, то адбываецца закраска ячэйкі, інакш прамалёўваецца малюнак. Этапы выканання задання
Калі ўласцівасць DefaultDrawing кампанента DrawGrid мае значэнне true (устаноўлена па змоўчанні), то замалёўвацца будуць толькі выдзеленыя ячэйкі табліцы. Як толькі вылучэнне зменіцца, ячэйка становіцца зафарбаванай тым колерам, які ўстаноўлены па змоўчанні. Калі для ўласцівасці DefaultDrawing устанавіць значэнне false, то пасля змены выдзеленай ячэйкі размалёўка папярэдніх ячэек не мяняецца. Кампанент DrawGrid зручна выкарыстоўваць для стварэння гульняў на клеткавым полі. Для праграміравання гульні спатрэбіцца матрыца стану гульні. У такой матрыцы будзе захоўвацца абстаноўка гульні на бягучым хаду. Пасля выканання ходу абстаноўка мяняецца, адпаведныя змены запісваюцца ў матрыцу стану і адбываецца абнаўленне кампанента DrawGrid. Матрыца стану гульні можа выкарыстоўвацца для захавання гульні і наступнай яе загрузкі. Прыклад 18.8. Падрыхтаваць поле гульні ў крыжыкі-нулікі для двух гульцоў. Этапы выканання задання
|
Кампанент StringGrid валодае істотна вялікімі магчымасцямі, чым DrawGrid, паколькі ён можа захоўваць у ячэйках і малюнкі, і тэксты. Калі неабходна ўнесці тэкст у нейкія ячэйкі DrawGrid, то спатрэбіцца выкарыстоўваць метады вываду тэксту на канву, што не заўсёды зручна. Прыклад 18.5. Кампанент DrawGrid на форме: Прыклад 18.6. Параметры апрацоўшчыка OnDrawCell:
- gdSelected — ячэйка вылучаная; Прыклад 18.7. Форма на этапе праектавання: Апрацоўшчык падзеі OnCreate для формы.
Апрацоўшчык падзеі OnSelectCell для табліцы.
Дадатак у час працы: Прыклад 18.8. Форма на этапе праектавання: Апрацоўшчык падзеі OnCreate для формы.
Апрацоўшчык падзеі OnSelectCell для табліцы.
Апрацоўшчык падзеі OnDrawCell для табліцы.
Апрацоўшчык падзеі OnClick для кнопкі.
Дадатак у час працы: |
Пытанні да параграфа
![]() |
1. Які кампанент выкарыстоўваецца для работы з данымі, якія прадстаўлены ў выглядзе табліцы? 2. Які апрацоўшчык падзей выкарыстоўваецца для вылучэння ячэйкі табліцы? 3. Які кампанент выкарыстоўваецца для прадстаўлення графічных даных у таблічнай форме? 4. Які апрацоўшчык выкарыстоўваецца для прамалёўкі ячэйкі табліцы? 5. З дапамогай якой каманды можна выклікаць апрацоўшчык падзеі OnDrawCell? |
Практыкаванні
1. Стварыце праект для вырашэння задачы. Дадзены двухмерны масіў A[m][n]. Палічыць суму:
- элементаў, у якіх сума нумара радка і нумара слупка роўная ліку х. Лік x уводзіцца;
- элементаў, якія менш нумара свайго радка;
- элементаў, якія больш нумара свайго слупка;
- элементаў, у якіх модуль рознасці нумара радка і нумара слупка роўны ліку x (дадаць поле для ўводу колькасці x);
- элементаў, якія размешчаны на галоўнай і пабочнай дыяганалях.
2. Аб'яднайце рашэнне ўсіх задач з практыкавання 1 у адзін праект. Выбар нумара задачы ажыццяўляць з выпадальнага спіса. Пры выбары нумара задачы, выводзіць у Memo яе ўмову.
Стварыце праект для вырашэння задачы. Дадзены двухмерны масіў A[m][n]. Вывесці:
- нумар слупка, сума элементаў якога максімальная;
- нумар радка, сума элементаў якога мінімальная;
- нумары радкоў, у якіх ёсць элементы, роўныя максімальнаму элементу табліцы;
- нумары слупкоў, у якіх ёсць элементы, роўныя мінімальнаму элементу табліцы;
- нумары радкоў, у якіх ёсць роўныя элементы;
- нумары слупкоў, у якіх усе элементы розныя;
- нумары радкоў, сумы элементаў у якіх роўныя паміж сабой.
3. Стварыце праект, у якім можна будаваць дыяграмы па даных у табліцы. Для пабудовы дыяграм неабходна выкарыстоўваць кампанент Chart.
4. Дапішыце ў прыклад 18.7 праверку выйгрышу на бягучым ходзе. У выпадку выйгрышу выводзіць адпаведнае паведамленне.
5*. Дадайце ў праект прыкладу з 18.7 магчымасць гульні з камп'ютарам. Камп'ютар гуляе нулікамі.
6. Стварыце праект, у якім можна падрыхтаваць поле для гульні «Марскі бой». Поле, якое вы стварылі, захаваць у тэкставы файл.