Alqoritm, xassələri və təsvir üsulları


Mühazirə 23: Menyularla iş



Yüklə 2,19 Mb.
səhifə120/125
tarix07.01.2024
ölçüsü2,19 Mb.
#205155
növüYazı
1   ...   117   118   119   120   121   122   123   124   125
aminlazım

Mühazirə 23: Menyularla iş


Menyu Windows sistemində və onun əlavələrində ən vacib elementdir və demək olar ki, elə bir pəncərə yoxdur ki, orada menyu sətri olmasın. Menyu müəyyən funksional əlamətlərə görə birləşdirilmiş bəndlər yığımından ibarətdir və hər bir bənd müəyyən əmri icra edir. Windows sistemindən bilirik ki, menyular əsas menyu və kontekst (peyda olan) menyulardan ibarətdir. Əsas menyu menyular sətri kimi pəncərədə həmişə təsvir olunur və bütövlükdə əlavənin bütün funksiyalarını idarə edir. Kontekst menyu isə obyekt üzərində mausun sağ düyməsini basdıqda peyda olur və həmin obyektə aid müəyyən əmrləri icra etmək üçün istifadə edilir.
Delphi-də əsas menyu MainMenu, kontekst menyu isə PopupMenu komponentləri ilə yaradılır. Bu komponentlər Standart səhifəsində yerləşir. Hər iki menyu TMenuItem tiplidir. TMenuItem sinfi əsas və kontekst menyuların bəndlərini təsvir etmək üçün
istifadə olunur. Bu menyuların əsas ümumi xassələri aşağıdakılardır:
Caption xassəsi - String tipli Caption xassəsi menyunun sərlövhəsindən ibarət sətirdir.
Əgər sərlövhədə mətn əvəzinə "-" işarəsi yazılarsa, onda uyğun menyu bəndinin yerində ayrıcı qırıq xətt çəkiləcəkdir.
Bitmap xassəsi - TBitmap tipli Bitmap xassəsi menyu bəndinin sərlövhəsinin sol tərəfində piktoqramın təsvir edilməsini müəyyənləşdirir, susmaya görə bu xassənin qiyməti Nil olur, yəni piktoqram yoxdur.
Enabled xassəsi - Boolean tipli Enabled xassəsi menyu bəndinin aktivliyini bildirir, əgər onun qiyməti False olarsa, onda menyu bəndi aktiv olmur və sərlövhəsi solğun rəngli olur. Bu o deməkdir ki, həmin menyu maus və ya klaviatura ilə icra oluna bilməz.
Susmaya görə Enabled xassəsinə True qiyməti verilmişdir, yəni o aktivdir.
Visible xassəsi - Boolean tipli Visible xassəsi ekranda menyu bəndinin görünməsini müəyyən edir. Susmaya görə ona True qiyməti verilmişdir və menyu bəndi ekranda təsvir olunur.
ShortCut xassəsi - TShortCut tipli ShortCut xassəsi klavişlər kombinasiyasını müəyyən edir, yəni menyu bəndinin yerinə yetirdiyi funksiyanı müəyyən klavişləri basmaqla da icra etmək mümkün olur. Klavişlər kombinasiyası Caption xassəsi ilə də müəyyənləşdirilə bilər (& simvolunun köməyi ilə). Bunların fərqi ondadır ki, klavişlər kombinasiyası Caption xassəsi ilə müəyyənləşdirildikdə, sərlövhədə simvol altdan xətt çəkilməklə nəzərə çarpdırıldığı halda, ShortCut xassəsində klavişlər kombinasiyası menyu bəndinin sağ tərəfində təsvir olunur. Bu xassəyə qiymət vermək üçün Obyektlər inspektorundan istifadə etmək daha əlverişlidir. Klavişlər kombinasiyasını proqramla müəyyən etdikdə isə
ShortCut (Key: Word; Shif t: TShif tState) : TSortCut;
funksiyasından istifadə etmək lazımdır. Burada Shift parametri idarəedici klavişi, Key isə hərf-rəqəm klavişini göstərir. Məsələn, Ctrl+A klavişlər kombinasiyasını təyin etmək üçün bu funksiya belə yazılmalıdır:
mnuSelectAll.ShortCut: ShortCut (Word('A'), [ssCtrl]);

Break xassəsi - TMenuBreak tipli Break xassəsi menyunun sütünlara bölünməsini


təyin edir. Bu xassə aşağıdakı qiymətlərdən birini ala bilər: mbNone -menyu sütunlara bölünmür (susmaya görə);
mbBreak -cari bənddən başlayaraq menyu yeni sütun əmələ gətirir; mbtBreakBar-cari bənddən başlayaraq menyu xətlə ayrılmış yeni sütun əmələ gətirir.
Checked xassəsi - Boolean tipli Checked xassəsi menyu bəndinin seçildiyini bildirir.
Əgər bu xassəyə True qiyməti verilərsə, onda menyu bəndinin sərlövhəsində xüsusi qeydetmə nişanı əmələ gəlir. Susmaya görə Checked xassəsinə False qiyməti verilmişdir, ona görə də menyu bəndi seçilmir.
Radioltem xassəsi - Boolean tipli Radioltem xassəsi menyu bəndinin sərlövhəsində əmələ gələn qeydetmə nişanının görünüşünü müəyyən edir. Susmaya görə bu xassəyə False qiyməti verilmişdir və qeydetmə nişanı işarəsindən ibarətdir; True qiyməti verildikdə isə belə nişan kimi qalın nöqtə işarəsi təsvir olunur.
Items xassəsi - TMenuItems tipli Items xassəsi menyu bəndlərindən ibarət massivdir.
Bu xassə ilə menyunun ayrı-ayrı bəndlərinə Items(O).
Count xassəsi - Integer tipli Count xassəsi menyuda bəndlərin sayını bildirir. Əgər menyuda bənd yoxdursa, həmin menyu üçün Count xassəsi sıfra barabər olur.
Bu ümumi xassələrdən başqa, PopupMenu kontekst menyu komponentinin aşağıdakı xassələri vardır:
AutoPopup xassəsi - Boolean tipli AutoPopup xassəsi obyektin üzərində mausun sağ düyməsini basdıqda kontekst menyunun ekranda peyda olmasını müəyyən edir. Bu xassəyə susmaya görə True qiyməti verildiyindən mausun sağ düyməsini basdıqda kontekst menyu peyda olur. AutoPopup xassəsinə False qiyməti verdikdə isə kontekst menyu peyda olmayacaqdır.
Aligment xassəsi - TPopupAligment tipli Aligment xassəsi kontekst menyunun mausun göstəricisinin hansı tərəfində əmələ gəlməsini müəyyən edir. Bu xassənin aldığı aşağıdakı qiymətlərə uyğun olaraq mausun göstəricisi paLef t - menyunun solyuxarı kənarını (susmaya görə), paCenter - üfqi vəziyyətə görə menyunun mərkəzini, paRight - menyunun sağyuxarı kənarını müəyyən edir.
Komponentin üzərində mausun sağ düyməsini basdıqda kontekst menyunuda əmələ gəlməsi üçün, onun PopupMenu xassəsinə qiymət kimi, tələb olunan kontekst menyunun adı mənimsədilməlidir. Məsələn, Labell komponentinə aid kontekst menyunun yaradılması üçün proqramda
Labell.PopupMenu:=PopupMenu1;
yazılmalıdır.
Maus və ya klaviatura ilə menyu bəndini seçdikdə baş verən əsas OnClick hadisəsidir. Əksər hallarda, əlavələrdə eyni bir əməliyyat menyu bəndi, həm kontekst menyu və həm də alətlər panelində yerləşən düymə ilə icra olunur. Çünki, həmin əməliyyat eyni bir prosedur (modul) ilə icra olunur. Bunun üçün imitasiya prinsipindən istifadə edilir.
Misal. Menyu bəndinin seçilməsini imitasiyası. procedure TForml.ButtonlClick (Sender: TObject); begin mnuOpen.Click; end;
Burada, Buttonl düyməsi basıldıqda, mnuOpen (ad şərtidir) bəndinin icra etdiyi əməliyyat yerinə yetiriləcəkdir.
Layihələndirmə zamanı menyuların yaradılması xüsusi konstruktorunda yerinə yetirilir. Menyuları dinamik olaraq, proqramlaşdırma yolu ilə də yaratmaq mümkündür.

Menyu konstruktoru


Əlavələrin layihələndirilməsi prosesində menyuları yaratmaq və ya dəyişdirmək üçün Delphi-də Menyu konstruktorundan (Menu istifadə olunur. Bu konstruktoru çağırmaq üçün forma üzərində MainMta ya PopupMenu komponentləri yerləşdirərək kontekst menyudar. Designer... əmrini icra etmək və ya bu komponentlər üzərində düyməsini iki dəfə basmaq lazımdır. Bu redaktorla yaradılan menyu yerinə yetirildikdən sonra necə görünəcəkdirsə, elə o cür də görünür.
Menyu konstruktoru ilə işlədikdə aşağıdakı kontekst menyulardast etməklə menyuların yaradılması və dəyişdirilməsi prosesini sürətləndirmək olar:
İnsert -menyu bəndini əlavə etmək; Delete-menyu bəndini pozmaq;
Create Submenu - alt menyu yaratmaq;
Select Menu - menyunu seçmək,
Save Template .... - menyunu şablon kimi saxlamaq;
Insert From Template - menyu şablonlarını pozmaq;
Delete Template - menyunu şablondan yükləmək;
Insert From Resource... - menyunu resurslardan yükləmək.

Redaktorla işləyərkən, Obyektlər inspektorundan istifadə etməklə menyu


bəndlərinin xassələrinə qiymətlər verilir.
Menyular yaradıldıqda drag-and-drop texnologiyası ilə menyu bəndlərinin yerini dəyişdirmək olar.
Menyular yaradıldıqdan sonra, onlar üçün prosedurlar yaradıldıqda (bənd üzərində mausun düyməsini basmaqla), prosedurun sərlövhəsində bu bəndin nömrəsi göstərilir, məsələn:
Procedure Tforml. N3Click (Sender:TObject);
Əgər Obyektlər inspektorunda menyu bəndi üçün Name xassəsinə ad verilərsə, onda prosedurun səriövhəsində həmin ad göstərilir, məsələn:
Procedure Tforml.mnu CloseClick (Sender:TObject);
Burada, mnuClose menyu bəndinin adıdır və tamamilə şərti seçilmiş addır. Lakin, unutmayın ki, bu ad yalmz latın hərflərindən və rəqəmlərdən ibarət ola bilər.

Yüklə 2,19 Mb.

Dostları ilə paylaş:
1   ...   117   118   119   120   121   122   123   124   125




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin