Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2-semestr / 13-ameliy_jif

.pdf
Скачиваний:
0
Добавлен:
20.09.2026
Размер:
217 Кб
Скачать
☆
13-ámeliy jumıs. Massivler menen islew komponentaları.
Jumıstıń maqseti: Windows Forms (C++/CLI) ortalıǵında massivler hám
kesteli maǵlıwmatlar (Table Data) menen islesiw ushın arnalǵan eń kúshli komponent – `DataGridView` menen tanısıw. `DataGridView` arqalı massiv elementlerin kórsetiw, redaktorlaw, sortlaw hám jańa qatar qosıw/óshiriw kónlikpelerin qáliplestiriw. Massivler (bir ólshemli hám eki ólshemli) hám interfeys arasındaǵı maǵlıwmat almasıwdı úyreniw.
`DataGridView` – bul paydalanıwshıǵa maǵlıwmatlardı keste (grid)
kórinisinde kórsetiwshi hám basqarıwshı qural. Ol Excel kestesine júdá uqsas bolıp, baǵanalar (Columns) hám qatarlardan (Rows) turadı. Hárbir element "Yacheyka" (Cell) dep ataladı.
Tiykarǵı qásiyetleri hám metodları:
`Columns`: Baǵanalar kollekciyası. Dizaynerde yamasa kod arqalı
qosıwǵa boladı (`Columns->Add("name", "Header")`).
`Rows`: Qatarlar kollekciyası. `Rows->Add(val1, val2)` arqalı qatar
qosıladı.
`Cells`: Qatardıń ishindegi yacheykalar. `Rows[i]->Cells[j]-
>Value` arqalı mánis alınadı yamasa ózgertiledi.
`DataSource`: Maǵlıwmatlar deregi (mısalı, `DataTable`, `List`
yamasa `Array`).
`SelectionMode`: Tańlaw rejimi (`FullRowSelect` - tolıq qatar,
`CellSelect` - yacheyka).
`AllowUserToAddRows`: Paydalanıwshı tómengi bos qatarǵa
jazıp, jańa qatar qosa ala ma? (`true`/`false`).
`ReadOnly`: Tek oqıw ushın (`true` bolsa, ózgertiw múmkin emes).
`DataGridView` komponenti eki rejimde isleydi:
1. Bound Mode (Baylanısqan): Maǵlıwmatlar bazası menen tikkeley
isleydi.
2. Unbound Mode (Baylanıspaǵan): Baǵdarlamashı kod arqalı
qatarlardı basqaradı (Biz usı usıldı qollanamız).
ÁMELIY BÓLIM:
Massivti `DataGridView` de kórsetiw.
1-mısal: Bir ólshemli massiv Formaǵa `dataGridView1` hám `button1` qoyamız. Kod (Form_Load):
// Baǵana qosıw
dataGridView1->Columns->Add("colIndex", "Indeks");
dataGridView1->Columns->Add("colValue", "Mánis");
Kod (Button_Click):
int arr[] = {10, 20, 5, 40, 15};
dataGridView1->Rows->Clear(); // Tazalaw
for (int i = 0; i < 5; i++) {
// Qatar qosıw
dataGridView1->Rows->Add(i, arr[i]);
}
Túsindirme: Biz dáslep eki baǵana ("Indeks", "Mánis") jarattıq. Keyin massivti cikl menen aylanıp, hárbir elementti `Rows->Add()` arqalı kestege qostıq.
2-mısal: Kesteden massivke oqıw Kestedegi ózgerislerdi massivke qaytarıw.
Kod:
int sum = 0;
for (int i = 0; i < dataGridView1->Rows->Count; i++) {
// Bos qatardı (new row) oqımaw ushın tekseriw
if (dataGridView1->Rows[i]->IsNewRow) continue;
// Yacheykadan alıw (Object -> String -> Int)
String^ valStr = dataGridView1->Rows[i]->Cells[1]->Value­>ToString();
sum += Convert::ToInt32(valStr);
}
MessageBox::Show("Summa: " + sum);
Túsindirme: Paydalanıwshı kestedegi sanlardı ózgertse, biz olardı `Cells[1]­>Value` arqalı oqıp, qosındısın esapladıq. `IsNewRow` qásiyeti eń tómengi bos qatardı esapqa almaw ushın kerek.
3-mısal: Matrica (Eki ólshemli massiv) `N x M` matricanı kórsetiw.
Kod:
int matrica[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
dataGridView1->Columns->Clear();
// 3 baǵana qosıw
for (int j = 0; j < 3; j++) {
dataGridView1->Columns->Add("col" + j, "Bagana " + j);
}
// Qatarlardı qosıw
for (int i = 0; i < 3; i++) {
dataGridView1->Rows->Add(); // Bos qatar
for (int j = 0; j < 3; j++) {
dataGridView1->Rows[i]->Cells[j]->Value = matrica[i][j];
}
}
Túsindirme: Matricanı kórsetiw ushın dáslep baǵanalardı dinamikalıq túrde qostıq. Keyin hár qatar ushın `Add()` orınlap, yacheykalarǵa (`Cells[j]`) mánis
berdik.
ÁMELIY TAPSÍRMALAR
1. `DataGridView` ge 5 studenttiń atın hám bahaların qosıń.
2. "Esaplaw" túymesi basılǵanda, kestedegi bahalardıń ortashasın shıǵarıń.
3. Kesteniń birinshi qatarın qızıl reńge (`DefaultCellStyle->BackColor`)
boyań.
4. "Tazalaw" túymesi arqalı barlıq qatarlardı óshiriń.
5. Paydalanıwshı tańlaǵan qatardıń (`SelectedRows`) mánisin `MessageBox`
ta kórsetiń.
6. `DataGridView` di tek oqıw ushın (`ReadOnly=true`) etiń.
7. 10x10 kóbeytiw kestesin `DataGridView` ge shıǵarıń.
8. Kestedegi mánisi 5 ten kishi bolǵan yacheykalardıń reńin sarı etiń.
9. "Qosıw": `TextBox` lardaǵı maǵlıwmattı kestege qosıń. "Óshiriw":
Tańlanǵan qatardı óshiriń (`Rows->RemoveAt`).
10. Kesteni baǵana boyınsha sortlań (`Sort` metodı yamasa basına basqanda
avtomat).
11. Kestedegi eń úlken sandı tawıp, onıń fonın jasıl etiń.
12. "Izlew": `TextBox` qa jazılǵan sózdi kesteden izlep, sol qatardı tańlań
(`Selected=true`).
13. Eki `DataGridView` qoyıń. Birinen ekinshisine qatar kóshiriń.
14. Random sanlar menen toltırılǵan keste jaratıń hám jup sanlardı sanap
beriń.
15. "Eksport": Keste maǵlıwmatların tekst faylına (`.txt`) saqlawshı
programma jazıń (qatarma-qatar).
Соседние файлы в папке 2-semestr