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

2-semestr / 8-lekciya_jif

.pdf
Скачиваний:
0
Добавлен:
20.09.2026
Размер:
222 Кб
Скачать
☆
8-lekciya. Komponentalar menen islew. Tarmaqlanıw hám tańlaw
ushın arnalǵan komponentalar. Massivler menen islew komponentaları.
Jobası:
1. Windows Forms-ta tarmaqlanıw komponentaları: CheckBox hám
RadioButton.
2. Tańlaw komponentaları: ComboBox hám ListBox.
3. Massivler menen islesiw komponentaları: DataGridView.
Tarmaqlanıw komponentaları: CheckBox hám RadioButton
Grafikalıq paydalanıwshı interfeysi (GUI) arqalı programma dúzgende,
paydalanıwshıǵa bir neshe varianttan tańlaw imkaniyatın beriw júdá áhmiyetli. Windows Forms (C++/CLI) kitapxanası bul ushın arnawlı "Tarmaqlanıw komponentaların" usınadı. Olardıń eń tiykarǵıları – `CheckBox` hám `RadioButton`. Bul komponentalar paydalanıwshıǵa "awa/yaq" yamasa "mınanı tańlayman" degen buyrıqlardı beriwge xızmet etedi.
`CheckBox` (Belgilew qutısı) – bul ǵárezsiz tańlaw komponenti. Yaǵnıy,
eger formda bir neshe `CheckBox` bolsa, paydalanıwshı olardıń hámmesin, geybirewin yamasa heshqaysısın tańlawı múmkin. Mısalı, "Pıshıq", "Iyt", "Balıq" degen úsh variant bolsa, paydalanıwshı úshewin de belgilewi múmkin. `CheckBox` tıń tiykarǵı qásiyeti – `Checked` (bool tipi). Eger `Checked == true` bolsa, belgi qoyılǵan, `false` bolsa, belgi joq degen sóz. Sonday-aq, `CheckState` qásiyeti arqalı úshinshi jaǵdaydı ("Indeterminate" - belgisiz) da ornatıwǵa boladı.
`RadioButton` (Radio túymesi) bolsa, "birin tańlaw" (Single Choice)
komponenti. `RadioButton` lar ádette topar-topar bolıp isleydi. Bir topar (mısalı, `GroupBox` ishinde) `RadioButton` lardan tek birewi ǵana tańlanıwı múmkin. Eger paydalanıwshı birewin tańlasa, aldınǵı tańlanǵanı avtomat túrde óshiriliedi. Mısalı, "Jınısı: Er/Hayal" yamasa "Soraw juwabı: A/B/C". `RadioButton` nıń da tiykarǵı qásiyeti `Checked` bolıp tabıladı.
Mısal (C++/CLI):
// CheckBox tekseriw
if (checkBox1->Checked) {
MessageBox::Show("Siz 1-varianttı tańladıńız!");
}
// RadioButton tekseriw
if (radioButton1->Checked) {
label1->Text = "Juwap: A";
} else if (radioButton2->Checked) {
label1->Text = "Juwap: B";
}
Tańlaw komponentaları: ComboBox hám ListBox
Eger tańlaw variantları júdá kóp bolsa (mısalı, 100 mámleket yamasa 50
qala), `RadioButton` qollanıw qolaysız boladı (forma tolıp ketedi). Bunday jaǵdayda "Dizimli tańlaw" komponentaları – `ComboBox` hám `ListBox` qollanıladı. Olar maǵlıwmatlardı ıqsham, dizim kórinisinde kórsetedi hám paydalanıwshıǵa sol dizimnen tańlaw imkaniyatın beredi.
`ComboBox` (Qurama qutı) – bul "tekst maydanı" (`TextBox`) hám
"jıǵılıwshı dizim"niń (Drop-down list) birigiwi. Paydalanıwshı kerekli varianttı dizimnen tańlawı yamasa (eger ruqsat etilse) ózi qol menen jazıwı múmkin. `ComboBox` az orın iyeleydi hám bir waqıtta tek bir tańlawdı kórsetedi. Onıń elementleri `Items` kollekciyasında saqlanadı (`comboBox1->Items- >Add("Ozbekstan")`). Tańlanǵan elementti `SelectedItem` yamasa `SelectedIndex` qásiyeti arqalı alıwǵa boladı.
`ListBox` (Dizim qutısı) – bul barlıq (yamasa bir neshe) variantlardı bir
waqıtta kórsetiwshi ashıq dizim. `ListBox` kóbirek orın iyeleydi, biraq paydalanıwshı variantlardıń kóbisin birden kóre aladı. `ListBox` tıń eń úlken artıqmashılıǵı – `SelectionMode` qásiyeti arqalı "Kóp tańlaw" (MultiSelect) rejimine ótiwge boladı. Yaǵnıy, paydalanıwshı Ctrl yamasa Shift túymeleri arqalı bir neshe elementti birge tańlay aladı.
Mısal (Element qosıw hám alıw):
// Form júklengende (Form_Load)
comboBox1->Items->Add("Alma");
comboBox1->Items->Add("Anar");
comboBox1->Items->Add("Júzim");
// Tańlanǵan elementti alıw (Button_Click)
if (comboBox1->SelectedIndex != -1) { // Eger bir nárse tańlanǵan bolsa
String^ selectedFruit = comboBox1->SelectedItem->ToString();
MessageBox::Show("Tańlaw: " + selectedFruit);
}
Massivler menen islesiw: DataGridView
Programmalastırıwda eń kóp ushırasatuǵın maǵlıwmat strukturası – bul
massivler hám matricalar (kesteler). GUI ortalıǵında bunday maǵlıwmatlardı kórsetiw hám redaktorlaw ushın eń kúshli komponent – `DataGridView` bolıp tabıladı. `DataGridView` Excel kestesine uqsas bolıp, ol baǵanalar (Columns) hám qatarlardan (Rows) turadı. Bul komponent tek maǵlıwmatlardı kórsetip ǵana qoymastan, paydalanıwshıǵa yacheykalardıń ishindegi mánislerdi ózgertiwge, jańa qatar qosıwǵa hám óshiriwge imkaniyat beredi.
`DataGridView` menen islesiwdiń eki jolı bar: 1) "Baylanısqan rejim"
(Bound Mode) – komponentti maǵlıwmatlar bazasına (Database) yamasa `DataTable` obyektine tikkeley jalǵaw (`DataSource` qásiyeti arqalı). Bunda maǵlıwmatlar avtomat túrde kórinedi. 2) "Baylanıspaǵan rejim" (Unbound Mode) – baǵanalar hám qatarlardı qol menen (kod arqalı) qosıw. Biz kóbinese ekinshi usıldı úyrenemiz, sebebi ol massivler menen islesiwdi jaqsı túsindirip beredi.
`DataGridView` ge baǵana qosıw ushın `Columns->Add("name", "Header Text")` metodı, al qatar qosıw ushın `Rows->Add()` metodı qollanıladı. Yacheykanıń mánisin alıw yamasa ózgertiw ushın `dataGridView1->Rows[i]-
>Cells[j]->Value` qollanıladı (bunda `i` - qatar indeksi, `j` - baǵana indeksi). Sonday-aq, `CellClick` yamasa `CellContentClick` waqıyaları (events) arqalı paydalanıwshınıń kestege basqan háreketlerin uslawǵa boladı.
Ámeliy mısal: Studentler dizimin basqarıw
Endi barlıq komponentlerdi biriktirip, kishi programma jazamız. Programmada Studenttiń atı (`TextBox`), Jınısı (`RadioButton`), Fakulteti (`ComboBox`) hám Ilimiy qızıǵıwshılıqları (`CheckBox`) boladı. "Qosıw" túymesin basqanda, bul maǵlıwmatlar `DataGridView` kestesine qosılıwı kerek.
Dizayn:
`textBoxName` (Atı) `radioMale`, `radioFemale` (Jınısı) `comboFaculty` (Fakultet: "Matematika", "Fizika", "IT") `checkSport`, `checkMusic` (Qızıǵıwshılıq)
`btnAdd` (Qosıw túymesi) `dataGridView1` (Baǵanaları: Atı, Jınıs, Fakultet, Hobby)
Kod (Button_Click):
private: System::Void btnAdd_Click(System::Object^ sender, System::EventArgs^ e) {
String^ name = textBoxName->Text;
String^ gender = radioMale->Checked ? "Er" : "Hayal";
String^ faculty = comboFaculty->Text;
String^ hobby = "";
if (checkSport->Checked) hobby += "Sport ";
if (checkMusic->Checked) hobby += "Muzıka ";
// Validaciya
if (name == "" || faculty == "") {
MessageBox::Show("Atı hám Fakultet toltırılıwı shárt!");
return;
}
// Kestege qosıw
dataGridView1->Rows->Add(name, gender, faculty, hobby);
// Formanı tazalaw
textBoxName->Clear();
checkSport->Checked = false;
checkMusic->Checked = false;
}
Bul mısalda biz ápiwayı komponentlerdi (TextBox, CheckBox) quramalı komponent (DataGridView) penen baylanıstırdıq. Paydalanıwshı interfeysi arqalı
maǵlıwmatlardı jıynap, olardı strukturalanǵan túrde (keste) saqlawdı hám kórsetiwdi úyrendik. `DataGridView` keleshekte maǵlıwmatlar bazası menen islesiwde eń tiykarǵı qural bolıp qala beredi.
BAQLAW SORAWLARÍ:
1. `CheckBox` hám `RadioButton` komponentleriniń tiykarǵı
ayırmashılıǵı (tańlaw sanı boyınsha) nede?
2. `ComboBox` hám `ListBox` komponentleri qanday jaǵdayda
`RadioButton` lardan qolaylıraq boladı?
3. `DataGridView` komponentinde yacheykanıń mánisin kod arqalı
qalay alıwǵa boladı (`Rows` hám `Cells` arqalı)?
4. `Checked` qásiyeti qaysı komponentlerde bar hám ol neni bildiredi?
5. `ComboBox` tıń `SelectedIndex` qásiyeti -1 bolsa, bul neni ańlatadı?
Соседние файлы в папке 2-semestr