Добавил:
bekan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2-semestr / 13-ameliy_jif
.pdf
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.
Teoriyalıq bólim:
`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
