Lekciya 14
.pdf14-Lekciya. Dialog aynaları menen islew. GUI ortalıǵında dialog aynaların bir-biri menen baylanıstırıw hám xabar aynaların qáliplestiriw.
Jobası:
1.Dialog aynaların basqarıw elementleri.
2.Dialog aynaların jaratıw.
3.Dialog aynaların bir-biri menen baylanıstırıw
Dialog aynaların basqarıw elementleri. Bunda interaktiv dialog aynaları túsiniledi. Olardı jaratıw hám basqarıw programmisttiń qálewine qaray ámelge asırıladı. Joqarıda aytıp ótkenimizdey, Visual C++ te MessageBox klası haqqında joqarıdaǵı aytıp ótken edik. Ol jaǵdayda 21 túrli kombinaciyalı show funksiyası bar. Bul funkciyalar hám olardıń parametrleri hámde parametrleriniń bahaları haqqındaǵı maǵlıwmatlardı hám dialog dialog jaratılıwna hámde qayta islewge itibardı qaratamız.
1. Show(String) funkciyası. Bir argumentli funkciya bolıp, belgilengen tekst penen xabar kórsetetuǵın dialog aynasın jaratıw ushın isletiledi. Onıń kiriwshi parametri System::String tipinde bolıp, System::Windows::Forms::DialogResult tipindegi mánisti qaytaradi.
if( MessageBox::Show("Bu oddiy sohow") == System::Windows::Forms::DialogResult:
2. Show(IWin32Window, |
String, |
String, |
MessageBoxButtons, |
|
|
MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions, String, String) funkciyası. Bul kóp paramerli bolıp, belgilengen parametler tiykarında interaktiv dialog aynasın jaratıw ushın isletiledi. Parametleri tómendegi bahaları bar.
IWin32Window Interface - System.Windows.Forms atlar keńisligi hám
System.Windows.Forms.dll kitapxanasınan paydalanıp, Win32 HWND ti engiziw interfeysin beredi. IWin32Window klass interfeysinen miyrasxor aladı. System.Windows.Forms.Control hám System.Windows.Forms.NativeWindow ulıwma ruqsat klasları interfeyslerin qollanadı, mánis retinde ComVisibleAttribute, GuidAttribute, InterfaceTypeAttribute tiplerinin qollanadı.
MessageBoxButtons - |
Enum |
tipindagi |
parametr bolıp tabıladı. |
System.Windows.Forms atlar |
keńisligi |
hám |
System.Windows.Forms.dll |
1
kitapxanasınan paydalanadı. Dialog aynalarında kórsetiliwi kerek bolǵan túymelerdi anıqlaydı. Bahaları public enum class MessageBoxButtons qa tiyisli bolıp tabıladı.
11.6-keste. MessageBoxButtons qabıl etiwshi bahalar
№ |
Mánis atı |
Wazıypası |
|
|
|
1 |
AbortRetryIg |
Dialog aynasında Abort, Retry Ignore túymelerin |
|
nore |
ornatıw |
|
|
|
|
|
|
2 |
OK |
Dialog aynasında OK túymesin ornatıw |
|
|
|
3 |
OKCancel |
Dialog aynasında OK hám Cancel túymelerin ornatıw |
|
|
|
4 |
RetryCancel |
Dialog aynasında Retry hám Cancel túymelerin ornatıw |
|
|
|
5 |
YesNo |
Dialog aynasında Yes hám No túymelerin ornatıw |
|
|
|
6 |
YesNoCancel |
Dialog aynasında Yes, No hám Cancel túymelerin |
|
|
ornatıw |
|
|
|
Dialog aynasına MessageBoxButtons túymelerin ornatıw ushın programma
fragmenti:
if ((MessageBox::Show("Usı aynanı jabıwdı qáleysiz be?",
"Xabarlandırıw", MessageBoxButtons::YesNo) == System::Windows::Forms::DialogResult::Yes)){
>Close();
MessageBoxIcon – Enum tipindegi obyekt bolıp, ol da joqarıdaǵı sıyaqlı, atlar keńisligi hám kitapxana menen isleydi. Dialog aynasında kórsetiw ushın dialog aynalarınıń túrlerin belgileytuǵın konstantalardı anıqlaydı.
Dialog aynaların jaratıw. Paydalanıwshı tárepinen dialog aynaların jaratıw ayna formasına qayta islew tiykarında ámelge asırıladı. Forma aynasına dialog
aynasın ornatıw ushın tómendegi qádemleri orınlaw kerek.
1-adım. Menyudan paydalanıp, [menu] → [project] → [addClass] → [CLR]
→[Windows Form] Buyrıqlar izbe-izligi tiykarında jańa forma qosıladı. Yaki, [menu]
→[project] → [add New item] → [UI] → [Windows Form] da orınlawǵa boladı.
2-adım. Jaratılǵan jańa forma aynası ótip, formaǵa tómendegishe qayta
islenedi. [Autosize] Ózgesheliktiń mánisin [true] ge, [StartPosition]
2
Ózgeshelikiniń mánisin [CenterParent] ge, [FormBorderStyle] Ózgesheligi mánisine [none], [FixedDialog], [FixedToolWindows], [SizableToolWindows] lerdiń birin ornatıw múmkin.
3-adım. Forma aynasın ózińiz qálegendey proektlestiriwińiz múmkin.
Mısalı, bir label, inputBox hám bir button jaylastıramız, olardı da kerekli qásiyetleri ornatamız.
4-adım. Tiykarǵı formaǵa ótip, oǵan #include " MyForm. h" bas bet fayldı qosamız. Bul dialog aynası ushın jaratılǵan forma áynegi menen islew ushın kerek.
5- Adım. Tiykarǵı formaǵa bir label hám bir button jaylastıramız.
Túymeniń klik hádiysesinde dialog aynasın shaqırıw programma fragmentin jazamız.
//MyForm myForm;
//myForm.Show();
//myForm.ShowDialog();
MyForm^ myFormWith = gcnew MyForm(); myFormWith->Show(); myFormWith->ShowDialog();
Programma fragmentindegi túsindirmege alıp qóyılǵan járdemide dialog aynalardı jaratıw hám shaqırıw múmkin. Biraq olardıń ayırmashılıqları bar. Sol sebepli olardıń hámmesin sol programma fragmentinde keltirdik. Birinshi qatarda formanı MyForm myForm ápiwayı obyekt retinde jaratılǵan. Onıń birinshi Show () usılı esaplanıp, bul usıl menen dialog aynasın shaqırıw logikalıq jaqtan qáte, sebebi sistema aynanı jaratadı hám ústinlikti tiykarǵı formaǵa beredi. Bul halda jaratılǵan ayna tez kórinedi. Ekinshi usılı bul ShowDialog() usıl jaqsı jantasıwlardan bolıp, dialog formasına ornatılǵan barlıq ayrıqshalıqlarǵa ámel etedi hám de paydalanıw múmkin. Ekinshi MyForm() konstruktordan paydalanıp, gcnew operatorı tiykarında jaratılǵan, onıń birinshi funkciya Show() da aldınǵısına uqsas bolıp, biraq ústinlikti paydalanıwshınıń ózine qoyıp beredi, yaǵnıy paydalanıwshı dialog aynaǵa juwap bermesten, tiykarǵı forma aynasına ótiwi múmkin. Ekinshisi bolsa bul ShowDialog () usıl jaqsı jantasıwlardan bolıp, dialog formasına ornatılǵan barlıq ayrıqshalıqlarǵa ámel etedi hám de paydalanıw múmkin.
6-adım. Dialog aynası túymesinde tómendegishe algoritmdi jazamız.
Dialog aynasına kiritilgen maǵlıwmattı tiykarǵı formaǵa alıp ótiw ushın aldın public: System::String^ email; sıyaqlı bir ózgeriwshi jaratıp alamız.
email = textBox1->Text;
this->Close(); 3
7-adım. Tiykarǵı formanıń túymesiniń hádiysesine jazılǵan
programma fragmenti dawamından tómendegin qosıp qoyamız.
label1->Text = myFormWith->email;
8-adım. Joybardı isletip jaratılǵan, dialog aynanıń islewin kóriw múmkin. Dialog aynanı joqarı dárejede jaratıw ushın oǵan jańa konstruktor jazıwda
múmkin. Onı tómendegishe ámelge asırıladı.
public: MyForm(System::String^ title)
InitializeComponent();
_title = title;
public: System::String^ _title;
//….
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
this->Text = _title;
// Tiykarǵı formada
MyForm^ myFormWith = gcnew MyForm("Xabar"); myFormWith- >ShowDialog();
label1->Text = myFormWith->email;
Bunday imkaniyat penen paydalanıwshı ushın qálegen dialog aynasın jaratıw múmkin.
Dialog aynalarınan paydalanıw programma paydalanıwshılarına kóplegen qolaylıqlar jaratıp beredi. Hár bir programmada bir tiykarǵı aynaǵa keminde funkcional múmkinshiligine qaray 4-5 dialog aynaları boladı.
4