Добавил:
bekan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2-semestr / 15-ameliy_jif
.pdf
15-ámeliy jumıs. Paydalanıwshı interfeysin proektlestiriw. GUI
ortalıǵında xabar aynalardı jaratıw.
Jumıstıń maqseti: Windows Forms (C++) ortalıǵında paydalanıwshı
menen interaktiv baylanıs quralı bolǵan "Xabar aynaları"n (`MessageBox` hám
arnawlı `Custom Dialogs`) jaratıw hám basqarıwdı úyreniw. Paydalanıwshıǵa
maǵlıwmat beriw, eskertiw, soraw hám tastıyıqlaw alıw ushın `MessageBox`
klassınıń túrli metodların qollanıw. Sonday-aq, standart `MessageBox`
imkaniyatları jetkiliksiz bolǵanda, ózgeshe dizayndaǵı xabar aynaların jaratıw
kónlikpelerin qáliplestiriw.
Teoriyalıq bólim:
Paydalanıwshı interfeysi (UI) tek ǵana tiykarǵı ayna emes, al
paydalanıwshı menen dialog quratuǵın kishi aynalardan da turadı. Bul aynalar eki
túrli boladı:
1. Standart Xabar Aynaları (`MessageBox`):
Operaciyalıq sistema (Windows) tárepinen usınılatuǵın tayın aynalar.
Túymeler: `OK`, `OKCancel`, `YesNo`, `YesNoCancel`,
`RetryCancel`, `AbortRetryIgnore`.
Ikonkalar: `Information` (i), `Warning` (!), `Error` (X), `Question`
(?).
Basqarıw: `MessageBox::Show()` metodı arqalı shaqırıladı hám
`DialogResult` (basılǵan túyme) qaytaradı. Bul modallı ayna.
2. Arnawlı Xabar Aynaları (Custom Dialogs):
Programmist tárepinen jaratılǵan `Form`.
Dizaynı, túymeleri hám logikası tolıq basqarıladı (mısalı, tekst
kirgiziw maydanı bar `InputBox`).
`ShowDialog()` metodı arqalı kórsetiledi.
ÁMELIY BÓLIM:
Hár qıylı xabar aynaların jaratamız.
1-mısal: Ápiwayı xabar (Information)
Kod:
MessageBox::Show("Operaciya tabıslı orınlandı!", "Xabar",
MessageBoxButtons::OK,

MessageBoxIcon::Information);
Túsindirme: Bul eń ápiwayı xabar. Paydalanıwshı tek "OK" túymesin basıp,
xabardı taslaydı.
2-mısal: Soraw hám juwap (Question)
Kod:
System::Windows::Forms::DialogResult result;
result = MessageBox::Show("Fayldı óshirejaqsız ba?", "Tastıyıqlaw",
MessageBoxButtons::YesNo,
MessageBoxIcon::Question);
if (result == System::Windows::Forms::DialogResult::Yes) {
// Óshiriw kodı...
MessageBox::Show("Fayl óshirildi.");
} else {
MessageBox::Show("Biykar etildi.");
}
Túsindirme: `YesNo` túymeleri qoyıldı. `result` ózgeriwshisi paydalanıwshınıń
qaysı túymeni basqanın saqlaydı. `if` arqalı logikanı bólip aldıq.
3-mısal: Arnawlı Xabar Aynası (Custom Dialog)
Standart `MessageBox` ta tekst kirgiziw (`InputBox`) joq. Biz ózimiz dúzemiz.
1. Jańa forma (`MyInputBox.h`) qosamız.
2. Oǵan `Label` ("Atıńızdı kirgiziń:"), `TextBox` hám `Button` ("OK") qoyamız.
Kod (MyInputBox.h):
public: String^ userInput;
private: System::Void btnOK_Click(...) {

userInput = textBox1->Text;
this->DialogResult = System::Windows::Forms::DialogResult::OK;
this->Close();
}
Kod (MainForm.h):
MyInputBox^ input = gcnew MyInputBox();
if (input->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
String^ name = input->userInput;
MessageBox::Show("Sálem, " + name);
}
Túsindirme: Biz ózimizdiń `InputBox` ımızdı dúzdik. Paydalanıwshı tekst jazıp
"OK" bassa, biz onı alıp, ekrana shıǵardıq.
4-mısal: Qáte xabarı (Error)
Kod:
try {
int x = Convert::ToInt32(textBox1->Text);
int y = 10 / x;
} catch (Exception^ ex) {
MessageBox::Show("Qáte júz berdi: " + ex->Message, "Qáte",
MessageBoxButtons::OK,
MessageBoxIcon::Error);
}
Túsindirme: `try-catch` blogı arqalı programmanıń qulawınıń aldın aldıq hám
paydalanıwshıǵa qızıl "Error" xabarın kórsettik.
ÁMELIY TAPSÍRMALAR

1. "Sálem Álem" xabarın shıǵarıń.
2. "Eskertiw" (Warning) ikonkası bar xabar shıǵarıń.
3. "Retry/Cancel" túymeleri bar xabar shıǵarıń.
4. Eger paydalanıwshı "Retry" bassa, "Qayta urınıw..." dep jazıń.
5. Xabar aynasınıń bas betine (Caption) óz atıńızdı jazıń.
6. `MessageBox` tıń default túymesin (mısalı, "No" túymesi aktiv bolıp
tursın) sazlań (`MessageBoxDefaultButton`).
7. `TextBox` bos bolsa, "Maǵlıwmat kirgiziń!" degen xabar shıǵarıń.
8. Formanı jabıw waqtında (`FormClosing`) "Shıǵıwdı qáleysiz be?" dep
sorań (`YesNo`).
9. Arnawlı `PasswordDialog` (Parol kirgiziw aynası) jaratıń. Parol durıs bolsa
`OK` qaytarsın.
10. `MessageBox` tı qollanbay, `Label` hám `Timer` arqalı 3 sekund
kóriniwshi "Toast Notification" (kishkene xabar) dúziń.
11. "Viktorina": Soraw shıǵarıń (`YesNo`). Durıs juwap bolsa 1 ball beriń.
12. `FolderBrowserDialog` qollanıp, tańlanǵan papka jolın `MessageBox` ta
kórsetiń.
13. `ColorDialog` qollanıp, tańlanǵan reńdi `MessageBox` ta kórsetiń (Hex
kodın).
14. Arnawlı `ProgressDialog` (Júklew aynası) jaratıń, `ProgressBar` menen.
15. Eger programma qáte (Exception) menen toqtasa, avtomat túrde "Qáte
haqqında esabat jiberiw" dialogın shıǵarıń.
Соседние файлы в папке 2-semestr
