O’ZBEKISTON RESPUBLIKASI OLIY VA O’RTA MAXSUS TA’LIM VAZIRLIGI
BUXORO DAVLAT UNIVERSITETI
Fizika – matematika fakulteti
“Axborot texnologiyalari” kafedrasi
Turayeva Mayram Hayit qizi
BERILGAN TESTLARDAN, TEST VARIANTLARINI HAKLLANTIRUVCHI DASTUR YARATISH
5111000-Kasb ta’limi(5330200-Informatika va axborot texnologiyalari) ta’lim yo’nalishi bo’yicha bakalavr darajasini olish uchun
BITIRUV MALAKAVIY ISHI
“Ish ko`rildi va himoya qilishga Ilmiy rahbar _____katta o’qit.X.U.Xayatov
ruxsat berildi” “_______” ______________ 2017 y.
Kafedra mudiri. Taqrizchi ________dots. Sh.S.Yuldashev
___________ dots.T.B.Boltayev “_______” ______________ 2017 y.
«______» __________________2017 y.
“Himoyaga ruxsat berildi”
Fakultet dekani _______________prof. Sh.M. Mirzayev
“_______” ________________ 2017 y.
Buxoro - 2017 yil
Mundarija:
Kirish.........................................................................................................................3
I. Dasturni yaratish uchun foydalaniladigan dasturiy vositalar.................................6
1.1. Delphi muhitida ishlash...................................................................................6
1.2. Delphidagi asosiy komponentalar va ularning xususiyatlari, hodisalari.......19
1.3. Delphi muhiti orqali OFFICE bilan ishlash..................................................36
I ning qisqacha xulosasi.......................................................................................44
II. Berilgan testlardan test variantlarini shakllantiruvchi dastur yaratish...............45
2.1. Delphida Offisni avtomatlashtirishning umumiy prinsiplari va word dasturiy
vositasi bilan ishlash.............................................................................................45
2.3. Test variantini formalari va uning modullari................................................60
2.4. Test variantini yaratuvchi dasturidan foydalanish uchun ko`rsatma.............75
II. ning qisqacha xulosasi.....................................................................................81
Xotima.....................................................................................................................83
Foydalanilgan adabiyotlar.......................................................................................84
2
Kirish
Biz tezkor texnikaviy taraqqiyot shiddat bilan rivojlanayotgan va muntazam
yangilanayotgan zamonaviy yuqori texnologiyalar, axborot –kompyuter tizimlari
asrida yashayotganligimizni unutmasligimiz kerak.
I.A.Karimov
Bugun kompyuter texnologiyalari dunyoda jadallik bilan rivojlanayotgan
sohalardan biriga aylanib bormoqda. Kompyuterlar asta-sekin insonlar hayotiga
kirib bormoqda. Ya’ni, faol ish yurituvchini internet global tarmog’isiz,
intellektual ishchini esa ish joyida kompyutersiz tasavvur qilish qiyin. Kompyuter
texnologiyalari inson hayot tarzida, kichik va katta korxonalarda, kompaniyalarda,
o’quv dargohlarida, davlat muassasalarida behad ahamiyat kasb etmoqda. Hozirda
kompyuterlarni qo`llashda ko`pgina foydalanuvchilar uchun yagona axborot
makonini ta'riflovchi tarmoqlarni tashkil etish muhim ahamiyatga ega. Buni butun
dunyo kompyuter tarmog`i hisoblanmish internet misolida yaqqol ko`rish mumkin.
Insonning barcha sohalardagi faoliyati axborot bilan to‘liq ta‘minlanganligi
va axborotlardan samarali foydalanishiga bog‘liq bo‘lmoqda. Katta hajmdagi
axborotlar oqimidan kerakli bo‘lganini tanlab olish, ularni qayta ishlash va
foydalanish uchun har bir mutaxassis shaxsiy kompyuter va aloqa
vositalaridan unumli foydalanishi kerakdir.
O’zbekiston Respublikasi Prezidentining «O’zbekiston Respublikasi Milliy
axborot-kommunikatsiya tizimini yanada rivojlantirish chora-tadbirlari to’g’risida»
2013 yil 27 iyundagi PQ-1989-sonli qaroriga muvofiq, unda davlat hokimiyati va
boshqaruvi organlari faoliyatiga zamonaviy axborot kommunikatsiya
texnologiyalarini keng joriy etish, ular tomonidan interaktiv davlat xizmatlari
ko’rsatish, elektron tijorat va elektron to’lovlar tizimini yanada ravojlantirish,
tijorat faoliyati va tadbirkorlikda axborot texnologiyalaridan samarali
foydalanishni rivojlantirish, Internet tizimi orqali kommunal va boshqa to’lovlarni
yo’lga qo’yish, mahalliy tovarlar va xizmatlarni tashqi bozorda realizatsiya qilish
maqsadida elektron tijorat infratuzilmasini yaratish borasida ustuvor vazifalar
3
belgilab berilgan. Bundan tashqari O’zbekistonda o’qitish texnologiyalarini
zamonaviylashtirish, jadallashtirish rivojlangan iqtisodiyotli mamlakatlarga
qaraganda yanada dolzarb ahamiyatga ega. Chunki hozirgi kunda milliy ta’lim
tizimining salohiyatli tizimli rivojlanishi yanada yuqori pog’onaga ko’tarildi.
Mavzuning dolzarbligi: shundan iboratki, talaba dasturlash muhiti orqali
ofis hujjatlarini avtomatik shakllantirishni o`rganishi, buni namuna sifatida test
variantini dasturini yaratishidir. Hozirda test variantini shakllantirish hayotda ko`p
qo`llaniladi va buni avtomatlashtirilgan dastur orqali bajarish dolzarbdir.
Bitiruv malakaviy ishimizning maqsadi: Delphi dasturlash muhiti
texnologiyasi imkoniyatlaridan foydalangan holda test variantlarini
shakllantiruvchi dasturini yaratish.
Bitiruv malakaviy ishimizning vazifalari: Malakaviy ish maqsadidan kelib
chiqqan holda quyidagi vazifalar belgilandi. Delphi muhitida ishlashni o`rganish.
Delphi orqali Word ilovalari hujjatlatini shakllantirish. Qo`yilgan masalani
bajaruvchi dasturni yaratish.
Bitiruv malakaviy ishimizning o`rganilganlik darajasi: Bitiruv
malakaviy ishimni qilish jarayonida juda ko’p ma’lumotlarni o’rganib oldim. Ya’ni
dasturni tuzish jarayonida Delphi muhitini, Delphida office bilan ishlash bilimiga
ega bo`ldim. Dasturni tuzish uchun barcha imkoniyatlarni bajar olish jarayonlarni
mayda mayda dasturchalar tuzish evaziga o`rgandim.
Bitiruv malakaviy ishimizning predmeti: Delphi7, MS Office 2003,
VBA, Delphi orqali word bilan ishlash.
Bitiruv malakaviy ishimizning ob`ekti: Dasturni tuzish uchun
foydalanilgan elektron adabiyotlar.
Bitiruv malakaviy ishimizning ilmiy farazi: Barcha fanlar uchun bu
dasturiy vositadan foydalanish.
Bitiruv malakaviy ishimizning yangiligi: Ta`lim muassasalarda o`tiladigan
barcha fanlarga test variantini shakllantirish uchun qulay imkoniyatli dastur
4
yaratish. Talabalar, fanni har bir mavzusini o`zlashtirishiga imkoniyat beradi. Uni
ta`lim jarayonida qo`llash.
Bitiruv malakaviy ishimizning amaliy ahamiyati: Dastur tuzish
jarayonida Delphi dasturlash tili, Office paketini boshqarishlarni zamonaviy
dasturlash tillari fanida foydalanish.
Bitiruv malakaviy ishimizning metodologik asoslari: Desktop
arxitekturali dasturlar yozish va Office hujjatidagi shablonlar.
Bitiruv malakaviy ishimizning metodlari: Dasturimizni tuzishda, Delphi
muhitidan va Word ilovasi hujjatlarini dasturlash orqali boshqarishda foydalanildi.
Bitiruv malakaviy ishimizning tarkibi va hajmi: Ushbu bitiruv malakaviy
ishi 85 betdan iborat bo’lib, kirish, 2 ta bob, xotima va foydalanilgan adabiyotlar
ro’yxatidan iborat.
5
I. Dasturni yaratish uchun foydalaniladigan dasturiy vositalar1.1. Delphi muhitida ishlash
Oxirgi vaqtda dasturlashga qiziqish ortib ketdi. Bu axborot texnologiyalarning
hayotimizga kirib kelishi bilan bog’liq. Agar inson kompyuter bilan ishlasa, unda
dasturlashtirishga ehtiyoj va xohish paydo bo’ladi. Hozirgi kunda personal
kompyuter uchun Windows operatsion sistemasi juda mashhur. Dastur tuzishda
uni yozishda Windows operatsion sistemasi kompyuterlardan foydalaniladi.
Texnikaning rivojlanishi kompyuter dasturlarining tez ishlashiga olib keldi.
Bularga Borland Delphi va Windows Vizual Basic va boshqalarni misol keltirish
mumkin.
Delphi - dasturiy vositasi: Bu windows uchun mo’ljallangan dasturlash muhiti
bo’lib, 1995 yilda Borland kompaniyasi guruhi dastur tuzuvchilari Chak (Chuck)
va Denni (Danny) tomonidan yaratilgan.
Bu til o’zining keng qamrovli imkoniyatlariga egaligi bilan birga, boshqa
dasturlash tillaridan o’zining ba’zi bir xususiyatlari bilan ajralib turadi.
Borland Delphi ning paydo bo’lishi dasturlashni rivojlantirish tarixida yorqin
ko’rinish bo’ldi. Delphi ning vujudga kelishiga quyidagilar sabab bo’ldi;
- Windows uchun dasturlash va komponentalar texnologiyasi.
- Masalalarni yechish uchun ob’ektga yo’naltirilgan usul.
- Komponentalar texnologiyasiga asoslangan ilovalarni tez yaratishning vizual
muhitlari.
- Interpritatsiyadan emas, kompilyatsiyadan foydalanish. Bu shundan iboratki,
interpretator bilan ishlashga qaraganda kompilyator bilan ishlash tezligi o’n
martalab ustunlikka ega bo’ladi.
- Universal usullar yordamida ma’lumotlar bazasi bilan ishlash imkoniyatlarining
mavjudligi.
Borland Delphi yuqorida bayon etilgan fikrlarni joriy etish maqsadida
yaratilgan. Ammo, uning eng asosiy elementi Paskal tili bo’lib hisoblanadi.
6
Hozirgi kunda Delphi tilining bir necha xil variantlari mavjud (Delphi 2, Delphi
3... , Delphi 7 va h.k.).
Delphi dasturlash muhiti uchun Object Paskal dasturlash tili asos qilib
olingan. Bilamizki, Paskalda biror kattaroq dastur, masalan amaliy dasturlar
majmuini tuzmoqchi bo’lsak, albatta biz modulli dasturlashdan foydalanamiz.
Ya’ni qo’yilgan masalani kichikroq bo’laklarga bo’lib olamiz va shular bilan
ishlaymiz. Natijani olish uchun esa, bu bo’laklarni birlashtiruvchi bitta asosiy
dastur qilinadi. Aynan shu narsa Delphi dasturlash muhitining asosi hisoblanadi.
Agar biz Delphi da biror forma hosil qilsak, u holda Delphi bizga o’zi avtomatik
tarzda shu formaga mos bo’lgan modullarni va bu modullarni boshqaruvchi
dasturni tuzib beradi. Boshqaruvchi dasturni Delphi da, agar unga o’zimiz nom
bermasak, Project1.dpr deb nomlaydi. Bunda .dpr fayl kengaytmasi. Avtomatik
tarzda tashkil qilingan modulga biz nom bermasak, u holda Delphi uni Unit1.pas
deb nomlaydi. O’zimiz esa *.pas kengaytmasini saqlagan holda xohlagan
nomimizni berishimiz mumkin.
Ishning boshlanishi. Delphi har doimgidek ochiladi, ya’ni quyidagicha.
1.1.1 – chizma. Delphi ni ishga tushurish.
Bu paytda bitta oyna o’rniga 5 ta oyna chiqadi.
Bu yerda Delphi ning asosiy tashkil etuvchilari keltirilgan:
1. Delphi ning asosiy oynasi.
2. Formalar konstruktori (Form Designer)
3. Ob’ektlar inspektori (Object Inspector)
7
Asosiy oynaUskunalar paneli Komponentlar paneliObyektlar daraxti
Obyektlar inspektoriForma dizayneri
Code Explorer oynasi Code Editor oynasi
4. Ob’ektlar daraxti (Object TreeView)
5. Dastur matni muharriri (Code Editor)
6. Dastur matniga yo’l ko’rsatuvchi oynasi (Code Explorer)
1.1.2 - chizma. Delphi 7 dasturining umumiy ko’rinishi.
Konsolli ilovalarni yasash
Konsolli ilovalar quyidagicha yasaladi. Dastlab File menyusidan New Other
Application buyrug’i tanlanadi, New bo’limi oynasidan yasaladigan Console
Application ilovaning tipini New Items oynasidan tanlash lozim. Natijada ekranda
konsolli ilova protsedurasining shabloni turgan Project1.dpr oyna paydo bo’ladi.
Bu oynaga dastur instruktsiyasini terish mumkin.
Konsolli ilova instruktsiyasi program dan keyin dastur nomi bilan boshlanadi.
Dastlab u loyiha nomi bilan bir xil nomlanadi. Saqlash vaqtida dasturchi saqlagan
loyiha nomi bilan yozib qo’yiladi. Shuni esda saqlash kerakki konsolli ilova
windows da yaratiladi, dastur esa DOS dasturi kabi bajariladi. DOS da ASCII
8
kodirovkasi, Windows da — ANSI kodirovkasi ishlatiladi. Ularda rus alfaviti
tulicha kodlanadi. SHuning uchun konsolli ilovaga ingliz tilidagi ma’lumotlarni
kiritish lozim. Bu muammoni hal qilish uchun ASCII da kodlangan matnni ANSI
ga kodlashga ahamiyat berilsa kifoya.
1.1.3 - chizma. Konsolli ilovalarni yasash
1.1.4 -chizma. Konsolli ilovaning bosh protsedurasi shabloni.
Misol: N gacha bo’lgan tub sonlar ro’yxatini chiqaruvchi dasturni konsolli ilovada
qarab chiqamiz.
program Project1; {$APPTYPE CONSOLE}var s,i,j,n:integer;beginwrite('N ni kirit='); read(n);writeln; writeln(' Tub sonlar ro`yxati '); writeln;for i:=2 to n do begin s:=0; for j:=1 to i do if i mod j=0 then s:=s+1; if s=2 then writeln(' ',i); end;readln; readln;
9
end.Dasturning matni {$APPTYPE CONSOLE} qatori bilan boshlanadi. Bu
direktiva ($) kompilyator uchun mo’ljallangan. Direktivaning ko’rsatmasi bilan
kompilyator bajarilayotgan dasturni konsolli ilova kabi generatsiya qiladi. Konsolli
ilovani kompilyatsiya qilish odatdagi tarzda ya’ni Project menyusidan Compile
buyrug’ini tanlash bilan amalga oshiriladi.
Muvaffaqiyatli kompilyatsiya qilingandan so’ng dastur Run menyusidan Run
buyrug’i bilan ishga tushiriladi. Konsolli ilovani ishga tushirgandan so’ng ekranda
DOS dasturi oynasi paydo bo’ladi. 3- rasmda Delphi da tuzilgan konsolli ilova
ishlaydigan DOS oynasi keltirlgan.
1.1.5 -chizma. Konsolli ilova ishlaydigan DOS-oynasi.
Konsolli ilova loyihasini yozib qo’yish standart holatda. File menyusidan
Save buyrug’ini tanlash natijasida ekranda loyiha nomi kiritiladigan Save Project
dialogli oyna paydo bo’ladi.
Windows muhitida dastur yaratish. Yangi loyiha yaratish.
Windows muhitida dastur yaratilishidan oldin siz yangi loyiha yaratishingiz
yoki mavjud bo’lgan loyihangizni ochishingiz kerak. Yangi loyiha yaratishdan
oldin ochilgan loyiha va uning formalarini yopishingiz shart. Loyiha va uning
formalarini yopish uchun asosiy menyudan (File\Close All) buyrug’ini tanlashingiz
kerak. Yangi loyiha yaratish uchun File\New Application (File\New\Application)
buyrug’ini berishingiz kerak. Loyihangizni xotiraga saqlashingiz uchun (File\
Save_All yoki Shift+Ctrl+S ) buyrug’ini tanlang. Saqlashda muloqot oyna
chiqganda ikkita faylni saqlashingiz kerak. Iloji boricha har bir loyihangizni
10
alohida alohida papkalarda saqlang. Loyiha faylini (Project.dpr) uning
kengaytmasi *.DPR (Delphi Project) bo’ladi, va *.dfm (Delphi Form) forma fayli.
Forma faylini nomini nima berishingizdan qat’iy nazar shunaqa nomli *.pas faylini
ham saqlaydi, bu fayl shu formaning dastur matni fayli (modul). Faylni
saqlagandan keyin dasturingizni ishga tushirsangiz loyihangiz saqlanayotgan
papka ichida mustaqil hech qanday Delphi ga bog’liqmas dastur fayli yaratiladi va
loyiha nomi *.exe kengaytmali fayl paydo bo’ladi. Undan tashqari shu papka
ichida (*.~pas, *.~dfm ) kengaytmali fayllar ham paydo bo’lishi mumkin. Bu
fayllar saqlashdan oldingi fayllar. (*.ddp, *.dcu, *.dof, *.res, *.cfg) kengaytmali
fayllar ham paydo bo’ladi.
Delphining ixtiyoriy loyihasi kamida oltita fayl yaratadi. Ulardan uchtasi
loyiha tomonidan yaratiladi va dasturchilar ularning tarkibini ko’pincha
o’zgartirmaydilar. Ular quyidagilar:
- Loyihaning bosh fayli, dastlab Project1.dpr deb nomlanadi.
- Dasturning dastlabki moduli/unit/, u ishning boshida avtomatik ravishda
yaratiladi. Fayl Unit1.pas deb nomlanadi va uning nomini ixtiyoriy nom bilan
almashtirish mumkin. Masalan: Main.pas.
- Bosh forma fayli Unit1.dfm deb nomlanadi, u bosh formaning tashqi ko’rinishi
haqidagi ma’lumotlarni saqlaydi.
- Project1.res loyiha uchun belgini saqlaydi.
- Project1.opt fayli matnli fayl hisoblanib, siz kompilyatorda qo’llagan
o’rnatmalaringizni saqlaydi.
- Project1.dsk fayli ishchi soha holati haqidagi ma’lumotlarni saqlaydi.
Albatta loyiha nomini o’zgartiriganda RES, OPT va DSK kengaytmali
fayllarning nomlari ham o’zgaradi.
Dastur kompilyatsiyasidan keyin quyidagi kengaytmali fayllar hosil bo’ladi:
DCU – tayyor modullar. EXE – ishchi fayl.
DSM – dasturning muhitda ishga tushishi uchun xizmat qiluvchi fayl, uning hajmi
juda katta va ish yakunlangach uni o’chirish tavsiya qilinadi.
11
~PA, ~DP - backup. – muharrirning vaqtinchalik fayllari.
Dastur matni faylining tuzilishi
Yangi loyiha yaratganingizdan keyin ekranda bo’sh forma hosil bo’ladi – bu esa
dasturingizni asosiy formasi hisoblanadi. Dastur matni muhariri oynasida
Unit1.pas fayli ochiladi. Modulingiz ichida formangizda nima ishlar bajarilishi
saqlanadi. Formangiz Form1 deb nomlanadi. Modulingiz ichida quyidagi dastur
matni bo’ladi:
unit Unit1; // Modulingizni nomi Unit1
interface { Modulingizni interfeys qismi (bu yerda boshqa modullardan chaqirilishi
mumkin bo’lgan qismi). }
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
{Modulingizni interfeys qismida standart modullarning bog’lanishi (chaqirilishi)
bajariladi.}
Undan so’ng formangiz tipi e’lon qilinadi. Loyihangiz yaratilishi vaqtida, Delphi
ning sinflari asosida yangi tip e’lon qilinadi va ko’rsatilgan sinfni barcha
imkoniyatlarini merosga oladi.
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
formaning boshqa modullardan chaqirilishi mumkin bo’lgan qismi public da e’lon
qilinadi private da esa chaqirilishi mumkin bo’lmagan qismi elon qilinadi.
var
Form1: TForm1;// Bundan keyin TForm1 tipiga tegishli o’zgaruvchi e’lon qilinadi.
12
Delphining barcha komponentalari, vizual komponentalar bibliotekasida saqlanadi
Visual Component Library (VCL). Har qanday komponent hatto forma ham,
o’ziga mos komponenta nomi oldiga T harfi qo’shiladi. Masalan: Forma, TForm
sinfini barcha imkoniyatlarini merosga oladi. Nishon (Metka, Label) komponenti –
TLabel sinfini va h.k.
implementation {Modulingizni asosiy dastur qismi va bu yerda boshqa
modullardan chaqirilishi mumkin bo’lmagan qismi.}
Bundan so’ng bitta kompilyator direktivasi mavjud {$R *.dfm}. bunda mos
ravishda bu modul bilan ishlaydigan forma ko’rsatilgan.
Forma va formada joylashgan barcha komponentalar, Delphi da *.dfm kengaytmali
faylda saqlanadi va bu fayllar matn fayli ko’rinishida bo’ladi.
Loyiha matni faylining tuzilishi.
Loyiha fayli, ayrim qo’shimcha imkoniyatlari ham mavjud bo’lgan Pascal tilidagi
matni ko’rinishidagi fayldir. Dasturingizni asosiy qismi shu faylda joylashgan.
Dasturingizni asosiy ishlarini (vazifalarini) Delphi da modullarga bajariladi, asosiy
faylda (loyiha faylida) emas. Loyiha faylini matn muhariri oynasida ochish uchun
Project\View_source buyrug’ini bering. Yangi loyiha faylini matni quyidagicha:
program Project1; // Programma nomi yoki loyihani nomi
uses
Forms // Loyihada standart modullarning bog’lanishi (chaqirilishi) bajariladi.
Unit1 in 'Unit1.pas' {Form1}; //Form1 ning modulini bog’lanishi.
Unit2 in 'Unit2.pas' {Form2}; //Form2 ning modulini bog’lanishi.
Bundan so’ng bitta kompilyator direktivasi mavjud {$R *.res}. Unda
loyihangizdagi resurslar fayli ko’rsatiladi. ( *.res kengaytmali fayl ).
begin { Loyihangizni asosiy qismi bo’lib bu yerda dasturni bajarilish ketma ketligi
beriladi. }
Application.Initialize; //Loyihagizni yaratilishini tashkil etadi
Application.CreateForm(TForm1, Form1); // Loyihangizda Form1 ni yaratilishi.
Application.CreateForm(TForm2, Form2); // Loyihangizda Form2 ni yaratilishi.
13
qavs ichida formani nomi, uning tipi (sinf tipi) beriladi.
Loyihada bir nechta forma yaratish mumkin lekin birinchi bo’lib yaratilgan forma
asosiy forma hisoblanadi va u yopilganda loyihangiz yopiladi.
Application.Run; //Loyihaniishga tushirish va asosiy formani chiqishi.
end. // dasturingizni tugagan qismi.
Delphi da ixtiyoriy komponentalarida ko’rinishi jihatidan uchga bo’linadi.
1. Komponent konteyner – bunda bu komponent o’zi ichiga yana boshqa
komponentni olishi mumkin. ( Masalan: Form, Panel, GroupBox va h.k.).
2. Komponent vizual - bunda bu komponent o’zi ko’rinmaydi uni chaqirish orqali
ko’rish mumkin. (Masalan: Faylni ochish, saqlash yoki rang tanlash muloqot
oynasi komponentlari).
3. Komponenta - bu komponent oddiy komponenta.
Delphi da ixtiyoriy komponentalarda (ob’ektlarda) uch xil buyruqlar bo’ladi.
1. Xususiyat (Properties) – Bunda komponentalarni ko’rinishi xossalari kiradi.
(Masalan: Color, Width, Height, Caption va h.k.)
2. Hodisa (Events) – Bunda komponentalarni ustida sodir bo’ladigan jarayonlari
kiradi. (Masalan: OnClick, OnDblClick, OnKeyPress va h.k.)
3. Metod – Bunda komponent ustida bajariladigan amallar kiradi. (Masalan: Memo
komponentiga LoadFromFile metodi orqali biror faylni o`qilishi va h.k.)
Forma va uning xususiyatlari va holatlari (komponent konteyner)
Forma Delphining asosiy komponenti hisoblanadi va bunda loyihangizdagi
barcha bajarilishi kerak bo’lgan loyihalashtirish va dasturingizni bajarilishi kerak
bo’lgan ishlari bajariladi. Delphida tuziladigan dasturlar biror forma asosida
qilinadi. Delphi da har bir yangi hosil qilingan formaga unga mos bo’lgan modul
avtomatik tashkil qilinib turiladi.
Bu esa dasturchi uchun juda qulay imkoniyat, ya’ni uning ishini
tezlashtirishga yordam beradi. Bu formaning shaklini tanlash, unda kompanentalar-
ni joylashtirish bizning ixtiyorimizda bo’ladi. Formaga biror kompanentani
qo’ymoqchi bo’lsak, shu kompanentaning ustida sichqonchaning chap tugmasini
14
ikki marta bosiladi va komponenta formaning o’rtasiga joylashadi yoki
komponent ustida sichqonchaning chap tugmasini bir marta bosib va formani
ixtiyoriy joyida sichqonchaning chap tugmasini bosib komponentni joylashtirish
mumkin. Biz uni xohlagan joyimizga surib ko’chirishimiz mumkin.
Forma komponentining quyidagi xususiyatlari va holatlari mavjud.1.1.1 – Jadval. Forma komponentining xususiyatlari
Xususiyati VazifasiAction Formangizni oynasi faol bo’lsa true qiymatiga ega bo’ladi.ActiveControl Formangizni oynasi birinchi marta faol bo’lganda formadagi
qaysi ob’ekt faol bo’lishini saqlaydi.BorderIcon biSystemMenu sarlavha satridagi barcha tugmalarni olib
tashlash false bo’lsabiMinimize sarlavha satridagi pastga olib qo’yish tugmasini qo’yish true bo’lsabiMaximize sarlavha satridagi kattalashtirish tugmasini qo’yish true bo’lsabiHelp sarlavha satridagi yordamni chaqirishni ishilatib bilish true bo’lsa agar yordam o’rnatilgan bo’lsa.BorderIcon ni qiymati [biSystemMenu, biMinimize, biMaximize, biHelp] bo’lishi mumkin.Formangizdagi sarlavha satrida chiqadigan tugmalarni bo’lish bo’lmasligi.
BorderStyle Formangizni chegarasini ko’rinishlaribsDialog -Formangiz muloqot oynasi ko’rinishidabsSingle -Formangiz chegarasi o’zgartirilmaydigan ko’rinishidabsNone -Formangiz chegarasi o’zgartirilmaydigan ko’rinishida va sarlavha satri ham yo’qbsSizeable -Formangiz chegarasi o’zgartiriladigan standart ko’rinishidabsToolWindow -bsSingle ko’rinishda sarlavha satri kichray-tirilgan va yopish tugmasi mavjudbsSizeToolWin, bsSizeable, bsSingle ko’rinishda sarlavha satri kichraytirilgan va yopish tugmasi mavjud
Align Komponentaning joylashishi. Ixtiyoriy komponent joylashish o’rni shu xususiyat orqali beriladi. Bu xususiyatga quyidagi qiymatlarini birini berishimiz mumkin:alNone – Joylashish o’rni yo’q. Qanday joylashtirilgan bo’lsa shundayligicha .alBottom – Pastki tomoniga joylashishi.
15
alLeft - CHap tomoniga joylashishi.AlRight – O’ng tomoniga joylashishi.AlTop - Yuqori tomoniga joylashishi.Komponenta, joylashgan komponenta ichida joylashishi.
AlphaBlend Mantiqiy qiymat qabul qiladi. Agar true, chin qiymat qabul qilsa formangiz shafof ko’rinishida bo’ladi. SHafoflik darajasi AlphaBlendValue xususiyati orqali beriladi
AlphaBlendValue
0..255 orasidagi butun sonni qabul qiladi. Formangiz shafoflik darajasi beriladi. Agar 0 qiymat berilsa forma to’liq shafof ko’rinishida, 255 da esa forma shafofmas ko’rinishida bo’ladi.
AutoScroll Mantiqiy qiymat qabul qiladi. Formangiz avtomatik tarzda yurgizuvchi hosil bo’lishi yoki bo’lmasligini ta’minlaydi
AutoSize Mantiqiy qiymat qabul qiladi. Komponetangizni o’lchamini avtomatik tarzda ichidagi ma’lumotlarga ko’ra o’zgarishini ta’minlashi uchun foydaliniladigan xususiyat.
BorderWidth Formangizni chegarasini qalinligi (Piksellarda beriladi)Canvas Formada chizish maydoniClientRect Forma o’lchami (foydalanish maydonining)ClientWidth Forma kengligi (foydalanish maydonining)ClientHeight Forma balandligi (foydalanish maydonining)Width Forma kengligiHeight Forma balandligiConstraints Forma oynasini o’lchamini maksimal, minimal qiymati
saqlanadi.MaxHeight – oynani maksimal balandligi.MaxWidth – oynani maksimal uzunligi.MinHeight – oynani minimal balandligi.MinWidth – oynani minimal uzunligi.Agar buning qiymatlarini bersangiz forma oynasini minimal qiymatidan kichik va maksimal qiymatidan kattalashtirib bo’lmaydi.
Color Forma rangiCaption Formangizni sarlavha satrida yoziladigan matn (Forma yozuvi)Icon Formangizni sarlavha satridagi belgisiLeft Formangizni chap tomondan chegarasi (joylashish koordinasi)Top Formangizni yuqoridan tomondan chegarasi (joylashish
koordinasi)Font Formangiz va undagi komponentalarning yozuvi (shrifti)Visible True yoki False qiymat qabul qiladi. True bo’lsa forma
ko’rinadi va aksincha.Enabled True yoki False qiymat qabul qiladi. False bo’lsa forma va
uning komponentalari bilan ishlashga imkoniyat yo’q va
16
aksinchaShowHint True yoki False qiymat qabul qiladi. Sichqoncha komponent
ustida kelganda izoh chiqish chiqmasligini boshqaradiHint CHiqadigan izoh satriMenu Formadagi asosiy menyuni ko’rsatish (mavjud bo’lsa)WindowState Birinchi ochilgandagi formani holati
(wsNormal, wsMinimized, wsMaximized Normal, Kichiklashgan,Kattalashagan)
FormStyle Forma stili (ko’rinishi).fsMDIForm, forma asosiy oyna bo’lib qolgan oynalar buning ichida joylashadigan ko’rinishda (ko’p oynali).fsMDIChild, forma asosiy oynaga tobe oyna bo’lib asosiy oyna ichida joylashadigan ko’rinishda (ko’p oynali).fsNormal, forma oddiy ko’rinishda (bir oynali).fsStayOnTop, forma hamma oynalardan yuqorida (oldinda) ko’rinishda (bir oynali).
KeyPreview Formada joylashgan ob’ektlardan oldin klaviatura tugmasini bosilganligi haqida malumot olishi uchun qiymati true aks holda false
Position Formangizni ochiliyotgan vaqtida ekranga joylashishishi.poDefault siz formangizni joylashtirgan joyida (Left, Top) chiqishi poScreenCenter formangizni ekran markazidan chiqishi
1.1.2 – Jadval. Forma komponentining holatlari.Holatlari VazifasiOnActivate Forma oynasi faol (aktiv) bo’lish jarayonida.OnDeActivate Forma oynasi faolligini (aktivligini) yo’qotganda.OnClose Forma oynasi yopilayotgandaOnCloseQuery Forma oynasi yopilguncha bajariladi. Forma oynasini yopilishi
uchun so’rov yuboriladi, shuning uchun bu holatdan forma oynasi yopilishini tasdiqlash mumkin.
OnCreate Forma yaratilayotgandaOnDestroy Forma oynasi (unichtojaetsya) yo’qotilayotgandaOnHide Forma oynasi ko’rinmas holatiga o’tayotganda
(formaning Visible xususiyat false bo’lganda)OnShow Forma oynasi ko’rinadigan holatiga o’tayotganda
(formaning Visible xususiyat true bo’lganda)OnClick Forma oynasida sichqoncha bir marta bosilgandaOnDblClick Forma oynasida sichqoncha ikki marta tez bosilgandaOnKeyDown Klaviatura tugmasi bosilganda, bajariladigan holatOnKeyUp Klaviatura tugmasini qo’yverganda, bajariladigan holatOnKeyPress Klaviatura tugmasini bosib va qo’yivergandan keyin,
17
bajariladigan holatOnMouseDown
Sichqoncha tugmasi bosilganda, bajariladigan holat
OnMouseMove Sichqoncha tugmasi bu komponenta ustida harakatlanayotganda bajariladigan holat
OnMouseUp Sichqoncha tugmasi qo’yiverganda, bajariladigan holat1.1.2 – Jadval. Forma komponentining holatlari.
Ba’zi xususiyatlarni tanlaganda masalan, BorderStyle xususiyatning faol
qiymatining o’ng tomonida ochiladigan ro’yxat belgisi paydo bo’ladi. Ko’rinib
turibdiki bunday xususiyatning qiymatini ro’yxatdan tanlash yo’li bilan berish
mumkin.
1.1.5 – chizma. Formaning style xususiyatini qiymatlari
Ba’zi xususiyatlar murakkab hisoblanadi, ya’ni ularning qiymatlari boshqa
xususiyatlar qiymatlari yig’indisidan hosil bo’ladi. Murakkab xususiyatlar nomlari
oldida “+” belgisi turadi va u belgilanganda xususiyatni aniqlovchi ro’yxat hosil
bo’ladi. Masalan, BorderIcons xususiyati, dasturning ishlashi jarayonida oynani,
boshqarish tugmalarining qaysisi kerakligini aniqlaydi.
Quyidagi misolni ko`rib chiqamiz. Unda Esc tugmasi bosilganda yopilsin.
OnKeyPress, OnCreate holatlaridan va KeyPreview xususiyatidan foydalanamiz.
procedure TForm1.FormCreate(Sender: TObject);
begin Form1.KeyPreview := True; end;
//Forma yaratilganda joylashgan ob’ektlaridan oldin klaviatura tugmasini
//bosilganligi haqida malumot olishi uchun KeyPreview xususiyatini
//qiymatini true qilamiz.
procedure TForm1.FormKeyPress (Sender: TObject; var Key: Char);
begin if key = #27 then Close; end;
18
//Formada Esc klaviatura tugmasi bosilganda formaning yopilishi.
1.2. Delphidagi asosiy komponentalar va ularning xususiyatlari, hodisalari.Matnni (namoyish etuvchi) chiqaruvchi komponentalar.
Bu kompanentalar ma’lumotlarni kiritish, saqlash, tahrir qilish va turli
xabarlar berish vositasi sifatida foydalaniladi.
TLabel (belgi) kompanentasi. (Standart komponentlar to’plamidan)
Belgi sizga mo’ljallashtirishda va bundan tashqari foydalanuvchiga o’z nomidan
tashqari axborot berishda hamda oyna va belgilarni tavsiflashda yordam beradi.
Yozuvlarni namoyish etish uchun ko’pincha metka (Label) komponentidan
foydalanamiz. Bu komponenta oddiy matnni ishlatadi va dasturni ishlash
jarayonida foydalanuvchi bu matnni o’zgartira olmaydi.
Label komponentini matnini Caption xususiyati orqali o’zgartiramiz va
komponenta, o’lchamini mos ravishda o’zgartirishi uchun uning AutoSize
xususiyatidan foydalanamiz. Uning tipi mantiqiy bo’lib, chin qiymat berishimiz
kerak. Label komponenti ichidagi matnni tekislash uchun Alignment xususiyatidan
foydalanamiz. U TAlignment tipli bo’lib quyidagi qiymatlardan birini olishi
mumkin:
- taLeftJustify – matnni chap tomonidan tekislash
- taCenter - matnni markazlashtirish
- taRightJustify – matnni o’ng tomonidan tekislash
Agar AutoSize xususiyatini qiymati chin (true) bo’lsa unda Alignment ta’sir
etmaydi (ishlamaydi). Matnni uzunligi bo’yicha sig’maydigan so’zlarni avtomatik
tarzda boshqa satrda o’tishi uchun WordWrap xususiyatidan foydalanamiz. Uning
tipi mantiqiy bo’lib, chin qiymat berishimiz kerak. Agar AutoSize xususiyatini
qiymati chin (true) bo’lsa unda WordWrap ta’sir etmaydi (ishlamaydi).
Rang bilan to’ldirilish rangini Color xususiyati orqali beramiz. Label rang
bilan to’ldirilgan yoki rangsiz bo’lishini Transparent xususiyati orqali aniqlanadi.
Uning tipi mantiqiy bo’lib, chin qiymat berishimiz kerak. Qachonki Label rasm
ustida o’rnatilgan bo’lsa u holda rangsiz bo’lishi kerak. Transparent xususiyatini
19
qiymatini chin qilamiz. masalan rasm geografik karta bo’lsa. Komponentdagi
yozuvlarni shriftini Font xususiyati orqali o’zgartirish mumkin. Label matnni
chiqaruvchi komponenti bo’lib, matnini tahrirlab bo’lmasligi uchun uni statik matn
deb ham aytadilar.
Label ni Left va Top xususiyatlari orqali bu komponentani, komponent
konteynerdagi joylashgan o’rnini beramiz. Unda Left chap tomondan necha piksel
Top esa yuqoridan. Label o’zi aktiv (faol) bo’la olmaydi, lekin tugmalar
kombinatsiyasi yordamida uni tanlash orqali boshqa komponentaga faolligini
berishi mumkin. FocusControl xususiyati shu uchun ishlatiladi, uni tipi
TWinControl. Masalan Label1, Edit1 ni izohi sifatida ishlatsak u holda
Label1.FocusControl := Edit1 berish o’rinli.
FocusControl ni faqat tugmalar kombinatsiyasi orqali ishlatish mumkin.
Label1 ni sichqoncha orqali tanlanganda Edit1 komponenti faol (aktiv) bo’lishi
uchun Label1 ni OnClick holatiga quyidagini yozamiz:
procedure TForm1.Label1Click(Sender: TObject);
begin
if Edit1.CanFocus then Edit1.SetFocus;
end;
Bunda tekshiriliyapti agar Edit1 faol bo’lmasa u holda faol (aktiv) lashtir.
Statik matn nomli komponent ham mavjud (StaticText). Bu ikkita
komponentani ishlash vazifasi va maqsadi bir xildir. StaticText, TWinControl
sinfining merosxo’ri (vorisi) bo’lib, TWinControl sinfi asosida yaratilgan boshqa
oynali komponentalar bilan bog’lash mumkin. Undan tashqari StaticText o’zining
atrofida ramka (chiziq) chizishi mumkin buni BorderStyle xususiyati orqali
bajaramiz. Bu xususiyatni tipi TStaticBorderStyle uchta qiymatdan iborat:
- sbsNone – Ramka yo’q
- sbsSingle – Ramka chiziqli bor
- sbsSunken – Ramka chiziqsiz bor (ichkariga kirilgan ko’rinishda).
20
Matnini tahrirlab bo’lmaydigan komponentlar uchun Edit dan ham
foydalanish mumin. Agar uni ReadOnly xususiyatini qiymati true (chin) bo’lsa.
Masalan:
Edit1.ReadOnly := true;
Edit1.Color := clBtnFace;
Edit1.Ctl3D := false;
Edit1.BorderStyle := bsNone;
Edit1.Text := 'Matn! faqat ko`rish uchun';
Edit1 ni hozirgi holatida StaticText va Label dan farq qilmaydi, ko`rinishidan
tashqari.
Matnni kirituvchi komponentalar
Ma’lumotlarni kiritish va tahrirlash uchun Delphi da maxsus turli xil
komponentlar berilgan. Masalan Edit, MaskEdit, Memo, RichEdit. Bulardan
tashqari Delphi7 da yangi LabelEdit komponenti ham yaratilgan. Bu komponentlar
orqali nafaqat ma’lumotlar chiqarish, hatto foydalanuvchi bu ma’lumotlarni
o’zgartira olishi ham mumkin.
Bir satrda matnni kirituvchi komponentalar
Bir satrda matnni kirituvchi komponentalarda ma’lumotni bir satrda
chiqaradi va tahrirlashga ruxsat beradi. Delphida bir nechta shunday komponentlar
bor, bulardan ko’p foydalaniladiganlardan Edit komponentidir. Bu komponentga
ma’lumotlarni kiritish yoki undan foydalanish uchun Text xususiyatidan
foydalanamiz. Atrofidagi ramkalarni o’zgartirish, ranglash, shriftlarni sozlash
barcha komponentlar uchun bir xil. Satrda belgilarni registrini o’zgartirishi uchun
CharCase xususiyatidan foydalanamiz va uning tipi TEditCharCase bo’lib uchta
qiymatdan birini qabul qiladi:
- ecLowerCase – Belgilar kichik registrga o’tkaziladi (kichik harflarga).
- ecNormal – Belgilar registri o’zglartirilmaydi (kiritilgan belgi o’zligicha
qoladi).
21
- ecUpperCase– Belgilar katta registrga o’tkaziladi (katta harflarga).
Edit ni parol kiritishda ham foydalanish mumkin. Unda PasswordChar
xususiyatidan foydalanamiz va uning tipi Char. Ma’lumot kiritish vaqtida,
kiritilayotgan belgi o’rnida bu xususiyatda berilgan belgi chiqaveradi. Masalan:
Edit1.PasswordChar:= ‘*’; Edit1.Text:=’Parol’;
Edit da ‘*****’ ko’rinishda chiqadi va uning Text xususiyatida ’Parol’ qiymati
turadi.
MaskEdit komponenti. Bu komponent ham Edit komponentiga o’xshaydi.
MaskEdit ko’p hollarda ma’lumotlarni yashirish holda yoki biror bir kodlash orqali
kiritishga to’g’ri kelib qoladi. Shunday holda bu komponentadan foydalanish
mumkin. Masalan parol kiritishda va hokazo. Edit komponentidan farqli MaskEdit
komponentida EditMask xususiyati mavjud. Bu xususiyat MaskEdit
komponentida ma’lumotlarni qanday ko’rinishda chiqishini ko’rsatadi. Quyidagi
jadvalda uning o’zgartirilgan xususiyatlari keltirilgan.
Xususiyati QiymatiFont 14 shrift va qalin yozuv tanlanganEditMask Date ( qanday bog’langani 1- rasmda keltirilgan)PasswordChar #0 (simvolning asl ko’rinishi)
* - simvolni * ko’rinishda chiqarishMax Length 10 - bu maydonga 10 tadan ortiq simvol kiritib
bo’lmaydi. Bu xususiyatdan kiritiladigan simvollarni cheklash uchun foydalaniladi.
1.2.1 – jadval maskedit komponentasini xususiyatlari qiymatini o`zgartirish
1.2.1-chizma. MaskEditning editmask xususiyatiga standart qiymatlar
22
Ko’p satrli matnni kirituvchi komponentalar
Memo komponenti sodda matn muhariri bo’lib, u ko’p satrli ma’lumotlarni
kiritish va chiqarish uchun ishlatiladi. Bu komponent mantlar ustida amallar
bajarish uchun ishlatiladi. Bu matn muhaririga Memo1.Lines[ ] xususiyati orqali
ma’lumotlarni olish yoki qo’shish mumkin. Lines.Count orqali Memo1
maydonidagi matnning satrlari soni olish mumkin.
PasswordChar xossasi. Ushbu xossa matnni kiritishdan himoya uchun
foydalaniladi. Parol kiritish kerak paytida foydalaniladi. Ushbu xossadan siz
maxfiylikning qo’shimcha darajasini ta’minlash uchun va foydalanuvchi ismini
yashirish uchun foydalanish mumkin.
ReadOnly xossasi. Ushbu xossa ob’ektning qiymatini taxrirlash imkoniyatini
boshqaradi. Siz uning qiymatini False yoki True qilib qo’yishingiz mumkin.
Agarda xossaning qiymati True bo’lsa foydalanuvchi ushbu ob’ektdan
foydalanishga, ya’ni ixtiyoriy matnni belgilash va nusxasini buferga olish uchun
birmuncha ruxsat beradi.
MaxLength xossasi. Ushbu xossadan uchala ob’ektga kiritiladigan
simvollarni cheklash uchun foydalaniladi.
Name xossasi. Komponent nomi. Dasturda foydalaniladigan
komponentga kirish yo’li.
Text xossasi. Memo maydoniga kiritiladigan matn. Bir butun holda
namoyon bo’ladi.
Font xossasi. Kiritilgan matnni tasvirlash uchun ishlatiladigan shrift
RichEdit – komponenti sodda matn muhariri bo’lib, u ko’p satrli ma’lumotlarni
kiritish va chiqarish uchun ishlatiladi. Bu komponent ham Memo komponentiga
o’xshaydi faqat unga nisbatan imkoniyati yuqoriroq. Bu komponent Win32
komponentlar to’plamida joylashgan. Misol: Berilgan matndan berilgan so’zni
o’chirish dasturini qarab chiqamiz. Matn kiritish uchun Memo komponentidan,
so’z kiritish uchun Edit komponentidan, natijani chiqarish uchun yana Memo
23
komponentidan, izohlar yozish uchun Label komponentidan va bajarish uchun
Button komponentidan foydalanamiz. Loyihani ko’rinishini quyidagicha
tayyorlaymiz. (1.2.2-chizma)
1.2.2-chizma. Berilgan matndan berilgan so’zni o’chirish dasturini oynasi.
Bajar tugmasiga quyidagi kodni kiritamiz. Dastur g’oyasi quyidagicha Memo1
ning har bir satrdan berilgan so’zni o’chirib Memo2 ni satrlariga qo’shib
boraveramiz to Memo1 ni oxirgi satriga kelguncha.
procedure TForm1.Button1Click(Sender: TObject);var i:integer; s,s1:string;begin s1:=Edit1.Text; { s1 o’zgaruvchiga kiritilgan so’zni olish }for i:=0 to Memo1.Lines.Count do begin {i ni qiymatini satrlar oxirigacha}s:= Memo1.Lines[i]; {s ga i- satrni olish }while pos(s1,s)>0 do {satrda so’z borligini tekshirish}begindelete(s,pos(s1,s),length(s1)); { satrdan so’zni o’chirish } end;Memo2.Lines.Add(s); {o’chirilgan satrni memo2 ga qo’shish} end; end;
Dasturni bajarish uchun F9 tugmasini bosamiz va ma’lumotlarni kiritib tekshirib
ko’ramiz. (1.2.3-chizma)
24
1.2.3-chizma. Berilgan matndan berilgan so’zni o’chirish dasturining natijasi.
Tugma komponentlari va ularning turlari.
Delphi dasturida Button, BitBtn va SpeedButton tugma komponentlari
mavjud ularni joylashgan o’rni quyidagicha. Button Standart komponentalar
palitrasiga, BitBtn va SpeedButton Additional komponentalar palitrasiga
joylashgan. Delphi da bu komponentlardan sichqoncha tugmasini bu komponentlar
ustida bir marta yoki ikki marta bosganda yoki boshqa xil holatlarda qandaydir
amallar bajarishda foydalaniladi.
Button komponentining ba’zi bir xususiyatlari va holatlari to’g’risida
ma’lumotlar beramiz. Button komponentining xususiyatlari quyidagicha: 1.2.2 – jadval Button komponentasini xususiyatlari
Xususiyatlari Vazifasi
Caption Komponentdagi matnni o’zgartirish
Cursor Sichqonchani bu komponent ustida kelganda ko’rinishini
o’zgartirish
Font Komponentdagi matnni shriftini o’zgartirish
Hint Sichqonchani bu komponent ustida kelganda chiqadigan izoh
matni
ShowHint Izoh matnini ko’rinishi yoki ko’rinmasligi
1.2.3 – jadval Button komponentasini holatlari
25
Holatlari Vazifasi
OnClick Button komponentida sichqoncha bir marta bosilganda
OnDblClick Button komponentida sichqoncha ikki marta tez bosilganda
OnKeyDown Klaviatura tugmasi bosilganda, bajariladigan holat
OnKeyUp Klaviatura tugmasini qo’yverganda, bajariladigan holat
OnKeyPress Klaviatura tugmasini bosib va qo’yivergandan keyin,
bajariladigan holat
OnMouseDow
n
Sichqoncha tugmasi bosilganda, bajariladigan holat
OnMouseMove Sichqoncha tugmasi bu komponenta ustida harakatlanayotganda
bajariladigan holat
OnMouseUp Sichqoncha tugmasi qo’yiverganda, bajariladigan holat
BitBtn komponentining xususiyatlari ham Button komponentining
xususiyatlariga o’xshaydi. Button komponentida mavjud bo’lmagan ba’zi bir
xususiyatlarini keltiramiz.1.2.4 – jadval Bitbtn komponentasini xususiyatlari
Xususiyatlari Vazifasi
Glyph Komponentda *.bmp kengaytmali rasmni qo’yish. (1-rasm)
Kind Matn bilan birga turli xil belgilarni qo’yish
Layout Belgilarni matnning turli tomonlardan qo’yish
Komponentda *.bmp kengaytmali rasmni qo’yish uchun komponentning
Glyph xususiyatini tanlaymiz va quyidagi oyna chiqadi. (1.2.4-chizma)
26
1.2.4-chizma. Bitbtn komponentasining Glyph xususiyatiga rasm joylashtirish
Bu yerdan Load… - tugmasi orqali birorta *.bmp kengaytmali rasmni
chaqiramiz va Ok - tugmasi orqali bu rasmni komponentda joylashtiramiz.
1.2.5-chizma. Bitbtn ga rasmni joylashtirish.
SpeedButton komponentining xususiyatlari ham Button va BitBtn
komponentlarining xususiyatlariga o’xshaydi. Bu komponentlarda mavjud
bo’lmagan ba’zi bir xususiyatlarini keltiramiz.1.2.5 – jadval SpeedButton komponentasini xususiyatlari
Xususiyatlari Vazifasi
Flat Komponent rangini forma rangi bilan bir xil qilish
GroupIndex Bir guruh tugmaga bitta tugmani bosilib qolishi
Down Tugmani bosilgan holatimi yo`qmi
SpeedButton komponentining Glyph xususiyati orqali rasm qo’yish,
Caption xususiyatida SpeedButton1 matni berish, Font xususiyati orqali shrifti
o’zgartirish, Flat xususiyatida true qiymat berish orqali rangsizlantirish va Layout
27
xususiyatida rasm matning o’ng tomonida chiqishi ko’rsatishimiz mumkin. Misol:
berilgan matnni tugma bosilganda oxirgi belgisini o’chirish dasturini qarab
chiqamiz. Dasturni ko’rinishini quyidagicha tayyorlaymiz. (1.2.6-chizma)
1.2.6-chizma. Berilgan matnni oxirgi belgisini o’chirish dasturi.
Dastur ko’rinishini tayyorlashda bitta Label bitta Edit va bitta SpeedButton
komponentlaridan foydalanilgan. Matn kirit yozuvi Label da, kiritish maydoni
Edit da, o’chirish tugmasi SpeedButton komponentida. O’chirish tugmasi
SpeedButton komponentining OnClick holatiga quyidagi kodni kiritamiz.
procedure TForm1.SpeedButton1Click(Sender: TObject);
var s:string;begin s:=Edit1.Text;delete(s,length(s),1);Edit1.Text:=s;end;
StringGrid komponentidan foydalanish.
Massivni kiritishda StringGrid komponentidan foydalanish qulay. StringGrid
komponenti Additional ichida joylashgan bo’ladi .
StringGrid komponenti o’zida jadvalni namoyon qilib jadvalning elementlari
yacheykalarda joylashgan bo’ladi. Quyidagi jadvalda StringGrid komponentining
bir necha xususiyatlari sanab o’tilgan. 1.2.6. jadval. StringGrid komponentining xususiyatlari
Xususiyati Ma’nosi
Name Programmada foydalaniladigan komponent nomiColCount Jadvaldagi ustunlar soni
RowCount Jadvaldagi satrlar soni
Cells[i,j] Jadval elementi
28
FixedCols Jadvalning chap tomonidagi fiksirlangan ustunlar soni. Fiksirlangan qism alohida rang bilan ajratiladi va gorizontal ajratuvchidan so’ng jadval o’z o’rnida qoladi.
FixedRows Jadvalning yuqori qismidagi fiksirlangan satrlar soni. Fiksirlangan satr alohida rang bilan ajratiladi va vertikal ajratilgandan so’ng jadval o’z o’rnida qoladi.
Options.goEditing Jadval yacheykalari ichida tahrirlashga ruxsat beruvchi belgi. true – tahrirlashga ruxsat beradi, false- tahrirlashni bekor qiladi.
Options.goTab Jadvalning keyingi yacheykasiga o’tishda kursor joyini o’zgartirish uchun Tab tugmasidan foydalanishga ruxsat beradi (true) yoki bekor qiladi(false)
Options.GoAlways-ShowEditor
Komponentda tahrirlash rejimini o’rnatish belgisi. Agar bu xususiyat qiymati false bo’lsa u holda yacheykada kursor paydo bo’ladi. Uni tanlash uchun F2 tugmasi bosish lozim yoki sichqonchani chertish lozim
DefaultColWidth Jadvaldagi ustunning kengligi
DefaultRowHeight Jadvaldagi satrning balandligiGridLineWidth CHiziqning kengligi,jadval yacheykalarning uzviyligiLeft Jadval maydonining chap chegarasidan to formaning
chap chegarasigacha bo’lgan masofa.Top Jadval maydoning yuqori chegarasidan to formaning
yuqori chegarasigacha bo’lgan masofaHeight Jadval maydoning balandligi
Width jadval maydoning kengligiFont Jadval yacheykalari ichida tasvirlash uchun ishlatiladigan
shriftParentFont formaning xarakteristik shriftidan meros oluvchi
Misol sifatida StringGrid komponentidan foydalanib massiv elementlarining
o’rta arifmetik qiymatini hisoblovchi dasturni ko’rib o’tamiz (1.2.7-chizma).
Dastur oynasida massivni kiritish uchun StringGrid komponentidan, hisoblash
natijalarini tushuntirish uchun va natijani chiqarish uchun Label1 va Label2
komponentlaridan, hisoblash jarayonini chiqarish uchun Button1 komponentidan
foydalanilgan.
29
1.2.7 – chizma. Massiv elementlarining o’rta arifmetigini hisoblash.
1.2.7 – jadval. Misolda StringGrid komponentining xususiyati.Xususiyat QiymatiColCount 5
FixedCols 0RowCount 1DefaultRowHeight 24Height 33DefaultColWidth 64Width 345Options . goEditing True
GridLineWidth 4
Options .goTabs TrueFont 16 shrift, qalin yozuvda
Yuqoridagi misolning dasturi quyidagicha:
procedure TForm1.Button1Click(Sender: TObject);var i:integer; s,k:real;begin s:=0; for i:=0 to 4 do s:=s+strtofloat(StringGrid1.Cells[i,0]);k:=s/5;Label2.Caption:=Label2.Caption+floattostr(k)+' ga teng';end;F9 tugmasini bosib, massivga qiymat kiritib bajarib ko’ramiz. (1.2.8-chizma)
30
1.2.8-chizma. Massiv elementlarining o’rta arifmetigini hisoblash natijasi.
Ma’lumotlarni ro’yxat ko’rinishda chiqaruvchi komponentlar.
Delphi dasturida ma’lumotlarni ro’yxat ko’rinishda chiqaruvchi
komponentlardan faqat ma’lumotlarni chiqarish uchun foydalanish mumkin. Bu
komponentlar ma’lumotlarni xotiraga saqlash imkoniyatiga ega emas. Agar
ro’yxatdagi ma’lumotlarni xotiraga saqlamoqchi bo’lsak albatta fayl
o’zgaruvchilardan foydalanish mumkin. Bu komponentlardan qaerda, nima
maqsadda foydalanish mumkin misollar yordamida qarab chiqamiz.
ListBox – komponenti. Bu komponent Standart komponentlar to’plamida
joylashgan. Bu komponentdan ma’lumotlarni ro’yxat ko’rinishida chiqarish uchun
foydalanish mumkin. Bu komponentda ro’yxatning barcha elementlari ko’rinib
turadi, bu elementlardan ixtiyoriy bittasini tanlash imkoniyatiga ega bo’lamiz. 1.2.8 – jadval. ListBox ning xususiyatlari
Xususiyat Ma’nosiColor Komponent rangiColumns Ro’yxatni nechta ustun buyicha chiqarilishi kiritiladiFont Ro’yxatdagi ma’lumotlar shriftiItems Ro’yxatga ma’lumotlar kiritish va undan foydalanishMultiSelect Ro’yxatdan bir nechta elementni tanlashSorted Ro’yxatga ma’lumotlarni saralab joylashtirishMisol: Ro’yxatdan element tanlanganda uni Edit komponentiga chiqarsin.
Masalani bajarish uchun formaga ma’lumotlarni tanlash uchun Listbox1
komponentidan, natijani chiqarish uchun Edit komponentidan va izohlar uchun
31
Label komponentlaridan foydalanamiz. Listbox1 komponentining Items
xususiyatiga quyidagi ma’lumotlarni kiritamiz: Oq, Qora , Sariq, Qizil, Yashil.
Listbox1 komponentining Onclick holatiga quyidagi kodni kiritamiz.
procedure TForm1.ListBox1Click(Sender: TObject);
begin
Edit1.Text:=ListBox1.Items.Strings[ListBox1.itemindex];
end;
1.2.9 - chizma. ListBox ga dastur misoli.
ComboBox komponenti. Bu komponent ham Standart komponentlar to’plamida
joylashgan. Bu komponentda ma’lumotlar, ochiluvchi ro’yxat ko’rinishida turadi.
Listbox komponentidan farqi bu komponentda ro’yxatning faqat bitta elementi
ko’rinib turadi. Joyni tejash maqsadida bu komponentdan foydalangan ma’qul. 1.2.9 – jadval. ComboBox ning xususiyatlari
Xususiyat Ma’nosiColor Komponent rangiFont Ro’yxatdagi ma’lumotlar shriftiItems Ro’yxatga ma’lumotlar kiritish va undan foydalanishItemIndex Ro’yxatga chiqadigan element indeksi, agar -1 bo’lsa bo’sh turadiText ItemIndex=-1 bo’lsa Text da kiritilgan ma’lumot chiqadiSorted Ro’yxatga ma’lumotlarni saralab joylashtirish
Misol: Ro’yxatdan tanlangan rang bo’yicha forma rangi o’zgarsin. Masalani
bajarishda, formaga ranglarni tanlash uchun Combobox1 komponentidan va
izohlar uchun Label komponentlaridan foydalanamiz. Combobox1 komponenti-
ning Items xususiyatiga quyidagi ma’lumotlarni kiritamiz: Oq, Qora, Sariq, Qizil,
Yashil. Combobox1 komponentining Onclick holatiga quyidagi kodni kiritamiz:
procedure TForm1.ComboBox1Change(Sender: TObject);
32
var s:string;begin s:=ComboBox1.Items.Strings[ComboBox1.itemindex]; if s='Oq' then Form1.Color:= clWindow; if s='Sariq' then Form1.Color:= clYellow;if s='Qora' then Form1.Color:= clBlack;if s='Qizil' then Form1.Color:= clRed;if s='Yashil' then Form1.Color:= clLime;end;
1.2.10 - chizma. ComboBox ga dastur misoli.
TreeView komponenti. Bu komponent Win32 komponentlar to’plamida
joylashgan. Bu komponent ro’yxatdagi ma’lumotlarni daraxtsimon shaklda
tasvirlaydi. 1.2.10 – jadval. TreeView ning xususiyatlari
Xususiyat Ma’nosiColor Komponent rangiFont Ro’yxatdagi ma’lumotlar shriftiImages Rasmlar ro’yxatini bog’lashItems Ro’yxatga ma’lumotlar kiritish va undan foydalanishMultiSelect Ro’yxatdan bir nechta elementni tanlashSortType Ro’yxatga ma’lumotlarni saralash usuli
1.2.11 - chizma. TreeView ning ko`rinishiga misol.
33
ListView komponenti. Bu komponent Win32 komponentlar to’plamida
joylashgan. Bu komponent ro’yxatdagi ma’lumotlarni turli xil ko’rinishlarda
chiqarish uchun ishlatiladi.1.2.11 – jadval. ListView ning xususiyatlari
Xususiyat Ma’nosiColor Komponent rangiColumns Bu xususiyat orqali ustunlarga ajratish, ustun sarlovhalari
kiritiladi, ustun kengligi kiritiladi.Font Ro’yxatdagi ma’lumotlar shriftiItems Ro’yxatga ma’lumotlar kiritish va undan foydalanishGridLines Jadvaldagi chiziqlar ko’rinishi yoki ko’rinmasligiMultiSelect Ro’yxatdan bir nechta elementni tanlashSortType Ro’yxatga ma’lumotlarni saralash usuliViewStyle Jadval ko’rinishi
Belgilanuvchi va bezashda ishlatiladigan komponentlar.
Delphi dasturida bir qancha komponentlarni qarab chiqdik. Lekin shunday
masalalar borki biz bir nechta holatlardan bittasini yoki bir nechta holatlardan bir
nechtasini tanlashimizga to’g’ri keladi. Bunday hollarda albatta belgilanuvchi
komponetlardan foydalanishga to’g’ri keladi. Delphi dasturida bunday
komponentlar yaratilgan bo’lib, ulardan qanday foydalanish to’g’risida
ma’lumotlar keltiramiz.
CheckBox (belgilash tugmasi) kompanentasi chap tomonida kichkina
darchasi bo’lgan matn satrini akslantiradi. Darchaga uning belgilanganligini
bildiruvchi belgi quyish mumkin. Bu komponent Standart komponentlar
to’plamida joylashgan. Ushbu tugma odatda dasturda «ha» yoki «yo’q» javobini
olish kerak bo’lgan vaziyatlarda foydalaniladi. Demak bu komponentning qiymati
mantiqiy qiymatga ega. Bu komponentdan dasturda bir nechta holatlardan bir
nechtasini tanlash uchun foydalanish mumkin.
RadioButton (belgilash tugmasi) kompanentasi. Bu komponent Standart
komponentlar to’plamida joylashgan. Bu komponent ham CheckBox
kompanentasiga o’xshaydi. Ushbu komponentning qiymati ham mantiqiy
qiymatga ega. Lekin bu komponentda bir nechta holatlardan birini tanlash
34
imkonini beradi. Demak bu komponentlarning bir biridan farqi CheckBox da bir
nechta holatlarni tanlash mumkin, RadioButton da esa faqat bitta holatni tanlash
mumkin. Bu komponentlarni asosiy xususiyatlarini keltiramiz.1.2.12 – jadval. RadioButton ning xususiyatlari
Xususiyati Ma’nosiCaption Belgilash tugmasidagi yozuv matniChecked Komponent belgilanganligi. Qiymati mantiqiy
Color Komponent rangiFont Matn shriftiHint Izoh matniName Komponent nomiShowHint Izohni chiqish yoki chiqmasligi
CheckListBox komponenti. Bu komponent CheckBox komponentlarini
ro’yxat ko’rinishda ifodalaydi. Bu komponent Additional komponentlar to’plamida
joylashgan. CheckListBox komponenti ro’yxatidagi elementlarni uning Items
xususiyati orqali hosil qilamiz.
RadioGroup komponenti. Bu komponent RadioButton komponentlarini
gruhlashtirilgan ro’yxatini ifodalaydi. Bu komponent Standart komponentlar
to’plamida joylashgan. RadioGroup komponenti ro’yxatidagi elementlarini uning
Items xususiyati orqali hosil qilamiz. Elementlarni Columns xususiyati orqali bir
nechta ustunlarda chiqarish mumkin. Caption xususiyati orqali sarlavha matni
kiritiladi.
GroupBox guruhlashgan ramka komponentasi. Bu komponent Standart
komponentlar to’plamida joylashgan. Bu komponent, komponent konteyner bo’lib,
uning ichida bir nechta komponentni joylashtirish mumkin. Guruhlashgan ramka
faqatgina bir toifadagi komponentalardan tashkil topgan bo’lishi shart emas.
ScrollBox formada ekranga sig’maydigan ob’ektlarni ko’rsatish imkonini
beruvchi komponent. Bu komponent Additional komponentlar to’plamida
joylashgan. Bu komponent ham komponent konteyner bo’lib, uning ichida bir
nechta komponentni joylashtirish mumkin.
35
Panel - Bu komponent Standart komponentlar to’plamida joylashgan. Bu
komponent ham komponent konteyner bo’lib, uning ichida bir nechta
komponentni joylashtirish mumkin. Dasturni bezashda qismlarga ajratishda juda
qulay. Bundan tashqari multimedia vositalarida ekran vazifasida ham ishlatish
mumkin.
Shape - Bu komponent Additional komponentlar to’plamida joylashgan.
Formada oddiy geometrik figura (aylana, kvadrat ...) larni namoyish qiladi.
Dasturni bezashda qo’l keladi.
TBevel - Bu komponent Additional komponentlar to’plamida joylashgan.
Interfeysni relefli bezash uchun xizmat qiladi.
1.3. Delphi muhiti orqali OFFICE bilan ishlashMS Office ning obyektli modeli
Agar murakkab masalani yechmoqchi bo`lsak, biz odatda o`ylaymiz, nima
bilan boshlanishni va qay tarzda buning yechimiga kelishimizni, kuchimizni
saqlagan holda va qanday vaqtni to`gri taqsimlashni. Agar bizlarga
avtomatizatsiyalash masalasi qo`yilgan bo`lsa va uning hisobotlari Ms Word yoki
Ms Excel formatidagi hujjatlari chiqarish kerak bo`lsa, ishni nimadan boshlashni
o`ylashimiz zarur bo`ladi.
Ms Word matn protsessori va Ms Excel jadval muhariri Ms Office ichiga
kiradi va COM – obyekti hisoblanadi. Ixtiyoriy Windows operatsion tizimiga
yozilgan dasturiy vosita bu obyektlarni boshqara oladi, agar COM interfeysini
qo`llab quvatlasa. Maxsus adabiyotlarda bu mexanizmning ishlash prinsiplari
yozilgan. Bizlar Word, Excel obyektlari va ularning hujjatlari bilan ishlaymiz. Bu
dasturiy vositalarning hujjatlari ham obyektdir.
Ms Office obyektli modelning tuzilmasidan ishni boshlashimiz kerak bo`ladi.
Bu tuzilmani bilishimiz bizga dasturlash muhiti orqali Ms Office ni obyektlari
hujjatlarini avtomatizatsiyalashga qo`l keladi. Endi Ms Office obyektli modelining
tuzilmasini ko`rib chiqamiz.
36
1.3.1 – chizma. Ms Wordning obyektli modeli.
MS Wordning obyektli modeli
1.3.1 – cizmada ko`rsatilganidek MS Word obyekt modelining tuzilmasi
daraxt ko`rinishida bo`lib, Application obyekti uning eng yuqorisidadir. Obyekt
modelida kiruvchi (Collection) kollektsiyalar, bir tipli ro`yxatdan iborat bo`lib
unga murojaat indeksi bo`yicha amalgam oshadi. Alohida obyektlarning o`zi ham
kolektsiyalardan tashkil etilgan bo`lishi mumkin, bu obyektlar o`z navbatida
obyektlar. Biror obyekt yoki kolektsiyaning elementiga faqat Application obyekti
orqali murojaat qilish mumkin. 1.3.1 – chizmada, obyektli modelning
umumlashgan shakli keltirilgan. Bu modelning ba`zi qismlarini ajratilgan holda
batafsil o`rganishimiz mumkin, masalan, Documents kolektsiya elementi –
Document (hujjat) obyektini. 1.3.2 – chizmada Document obyektining tuzilmasi
keltirilgan bo`lib, uning har bir elementi va ular orasidagi bog`lanishlar keltirilgan.
37
1.3.2 – chizma. Ms Word hujjatining obyektli modeli.
Document obyektining tarkibiga unu to`liq tasvirlanishini va hujjatni
qismlarini o'z ichiga oladi. Masalan, biror kollektsiyaning xususiyatlari, hujjat
foydalanuvchisining xususiyatlari (nomi, mavzusi, avtori va h.k). Bu hujjatga
tegishli bo`lib lekin namoyish etmaydi. Jadval kollektsiyasi – hujjatni tashkil
etuvchi qismi bo`lib sahifaga namoyish etadigan elementdir. Kolektsiya
elementining obyekti o'z navbatida kollektsiya ham bo`lishi mumkin. Masalan, har
bir jadval elementi satr va ustunlar kollektsiyasidan va yacheyka tipli lementdan
iboratdir. Kollektsiyalar nafaqat bir tipli elementlardan tashkil etilgan bo`ladi,
balki har bir elementi biri – birida farqli bo`lishi ham mumkin. Forma kollektsiyasi
(Shapes) ning elementlari yaratilish va joylashish bo`yicha bir tipli bo`lishi
mumkin, tuzilishi jihatdan har xil.
Shapes kollektsiya elementi tuzilishi jihatidan, yozuv (Textbox), tashqi obyekt
(OLEObject), chiziq (line), siniq chiziq (Ployline) va boshqa tipdagi obyektlarni
olishi mumkin. Hujjatning asosiy obyekti bu albatta matndir. Matnga murojaat
qilish uchun Words kollektsiyasi yoki Range obyektidan foydalanishimiz mumkin.
38
Words kollektsiya elementlarining obyektlari matnda so`zni namoyish etish va
uning xarakteristikaslarini saqlaydi. Range obyekti matnni yoki matnning bir
qismini bilan ishlash uchun imkoniyat beradi. Albatta, 1.3.2 – chizmadagi
hujjatning obyektli modeli uni butunlay tasvir eta olmaydi. Boshqarish obyektlari
modelini, “shrift” obyekti va sahifa parametrlarini tasvir etuvchi obyektlarni ko’rib
chiqish ham foydali bo’ladi. 1.3.3 – chizmada Ms Word boshqaruv elementlarining
obyektli modelini umumiy tuzilmasini ko’rinishi ko’rsatilgan.
1.3.3 – chizma. MsWord boshqaruv elementining obyektli modeli
1.3.3 - chizmada ko’rsatilganidek, MS Wordning boshqaruv elementlari bitta
kolleksiyaga yig’ilgan, daraxtsimon tuzilmasi keltirilgan, har bir tugun obyekt yoki
ichki kollektsiyadan tashkil etilgan. Bu tuzilmaga sozlash va qo`shimcha qo`shish
mumkin. Foydalanuvchi va dasturchi, ixtiyoriy uskuna orqali, bu tuzilmaning
tuguniga obyektni o`chirishi, qo`shish, o`zgartirish yoki faollashtirishi mumkin.
Boshqaruv elementlarini faollashtirish bo`yicha mos ravishda metodlari bajariladi.
Ms Word obyektli modelining asosini ko`rib chiqdik, bu bizning loyihalar
yaratishimizda yordam berishi mumkin.
MS Excelning obyektli modeli
MS Excelning obyektli modeli umumiy qoidalariga ko’ra MS Word bilan
aynan o’hshashdir. Bu model ierarxiv strukturaga ham ega bo’lib, ildizida
39
Application (Excel.Application) obyekti turadi va u orqali MS Excel ilovalarining
har qanday ichki obyektidan, kolleksiyalardan yoki ochiq ish kitobi
komponentlaridan foydalanish ta’minlanadi. MS Excel obyektli modelining
tuzilmasi umumiy ko’rinishi 1.3.4 - chizmada ko’rsatilgan.
1.3.4 – chizma. Ms Excelning obyektli modeli.
Aytib o’tilganidek, MS Excel obyektli modelining cho’qqisi Application
obyekti bo’lib, o’ziga bevosita Selection – joriy belgilangan obyekt, WorkBooks –
ochiq ish kitoblari kolleksiyasi, har xil boshqaruv elementlari kolleksiyasi,
muloqot oynalar va boshqa MS Excel ilovalarining xususiyatlarini, obyektlar va
kollektsiyalarni o’z ichiga oladi oladi. Selection obyekti, joriy belgilangan obyekt
xususiyatlariga ega, shuning uchun bu yerda shu obyektning model tuzilmasini
ko’rib o’tishda ma’no yo’q. Agar yacheyka belgilangan bo’lsa,
Selection=Yacheyka, agar diagramma bo’lsa, unda Selection=Diagramma. Agar
yacheykalar sohasi tanlangan bo’lsa, Selection=ustunlar va satrlar kolleksiyasi. Ish
kitoblari kolleksiyasi ochiq ish kitoblari bo’lib, indeks bo’yicha foydalaniladi. Bu
kolleksiyaning har bir elementi “ish kitobi” dir. Ilovani boshqarish uchun
mo’ljallangan boshqarish panelida, menyu, tugmalar, dialoglar va boshqa
40
obyektlar mos boshqarish elementlari kolleksiyasiga yig’ilgan. “Ish kitobi” ning
eng asosiy elementi bu ish varoqlari kolleksiyasidir. Alohida bir ish varog’i
kolleksiya elementi hisoblanadi va u oddiy varoq (jadvallar ko’rinishida) yoki
diagrammalar ko’rinishida bo’lishi mumkin. Oxirgi ko`rgan holatimizda,
diagrammalardan boshqa obyektni saqlay olmaydi. Jadvallar ko`rinishidagi
variantni 1.3.5 – chizmada ko`ramiz.
1.3.5 – chizma. Ish kitobi varig`ining obyektli modeli.
Ish varog`i bilan ishlashning asosida yacheyka obyekti hisoblanadi. Yachey-
kani obyekt sifatida qaraganda, o`zi ham bir qator xususiyat va obyektlarni o`z
ichiga oladi. Bulardan zaruriy va ko`p ishlatiladiganlari: matn, shrift, matn stili,
chegaralar, rang to`ldirishlardir. Bu xususiyatlarga murojaat qila olishimiz,
qiymatinit o`zgartirishimiz uchun, yacheykaga ham murojaat qilib bilishimiz
kerak. Range sohasi yacheykalari, Birlashgan yacheykalarday foydalaniladi.
Yacheylalar sohasining xususiyatlari, yacheyka xususiyatlari bilan ustma – ust
tushadi, lekin ularning sohasini o`lchami va koordinatalari farqlidir. Yacheykalar
satr va ustunlarning birlashmasidan iborat. Birlashgan satr va ustunlar kolleksiya
ko`rinishida bo`lib, sonlar indeksi yoki ustunlar harfiy belgilari bilan boshqariladi.
Ishchi varoqida tashqi obyektlar joylashtirishimiz mumkin. Tashqi OLE obyektlar
41
kollektsiyasi sifatida quyidagi obyektlarni joylashtiramiz. Bular: rasmlar, word
hujjatlari qismlari, ovozlar video yozuvlari va boshqa obyektlar, Tizimda OLE
server sifatida ro`yxatdan o`tgan dasturlar ularni ustida amallar bajara oladi.
Bunday obyektlarni OLEObjects kolleksiyasi elementlari bilan foydalanish
mumkin. Ularning xossalaridan faqatgina OLE serverlari yordamida foydalanish
mumkin. Excel dasturi ko`plab grafik obyektlar to`plamiga ega bo`lib, ularni ish
varog`iga joylashtira olamiz. Rasmlar geometrik shakllar, diagrammalar ko`pincha
kolleksiyaga birlashtirilgan va undan foydalanishimiz mumkin. Masalan:
ChartObjects diagrammalar to`plami kolleksiyasi ishchi varoqda yoki alohida
varoqda joylashshishi mumkin. Har bir dagramma, o`z o`rnida obyektlar va
kolleksiyalar to`plamini o`z ichiga oladi.
1.3.6 – chizma. a) Excelda izlashning obyektli modeli. b) Wordda izlash.
MS Office dasturlashtirishdagi universalligiga va ko`plab imkoniyatlariga
egaligiga ishonch hosil qilishingiz uchun Wordga hamda Excelda ishlovchi yana
bir obyektlar kolleksiyasini ko`rib chiqamiz. Bu muloqot oynasi kolleksiyasi
bo`lib, uni ochish uchun foydalanuvchi menyu buyrug`ini tanlasa yetarli. U
Application obyektiga tegishli. Obyektli modelda hamma dialoglar Dialogs
kolleksiyasiga tegishli va sonli indekslar yordamida ulardan foydalanishimiz
mumkin. Show metodi parametrlari orqali dialogga parametrlarni yuborish va
ularni bajarish - bu excel dasturidagi dialoglar modeli. (1.3.6, a-chizma), word
42
dasturlari uchun model farq qiladi. Farq shundaki, Worddagi dialog parametrlari
kolleksiya obyekti- elementlari orqali yuboriladi (1.3.6, b-chizma).
Item() obyektida tipik xususiyat va metodlardan tashqari o`ziga xos
xususiyatlari va metodlari mavjud. Masalan: “найти и заменит” dialogida find
xususiyati mavjud, u dialog ish boshlanmasidan oldin qidiruvch matnini aniqlaydi.
Excelda Dialogs kolleksiyasi obyekti Word dialoglaridan farq qiladi. Quyida faqat
Excel obyektli modelini ko`rib chiqamiz (1.3.7-chizma) .
1.3.7 – chizma. Excelning dialog kollektsiyasi obyektli modeli.
Bu rasmda dialog kolleksiyasining oz qismi keltirilgan bo`lib, dasturchi va
foydalanuvchilar ko`p ishlatadigan dialoglari ko`rsatilgan. Odatda dialogga
qiymatlar beriladi va foydalanuvchi ish harakatiga qarab “True” yoki “False”
qiymati qaytariladi.
Xulosa qilib aytganda MS Office tarkibidagi dasturlar, masalan, Word va
Excel, bir-biriga bog`liq obyekt va obyektlar kolleksiyasi ko`rinishidadir. O`z
43
o`rnida obyektlar va obyektlar kolleksiyalari ham (Parent) xo`jayiniga ega va unda
joylashgan. Obyektli model eng yuqorisida Word.Application, Word matn
protsessori va Excel.Application, Excel jadval protsessorining obyekti joylashgan.
Asosan shu obyektlar orqali tashqi dasturlar bilan aloqa o`rnatiladi.
I. bo`yicha xulosa.Bitiruv malakaviy ishimning birinchi bobi yuqorida aytilganidek, “Dasturni
yaratish uchun foydalaniladigan dasturiy vositalar” deb nomlanadi. Bu bobning
o’zi ham uch qismga bo’lingan bo’lib, birinchi qismi “Delphi muhitida ishlash”
deb nomlanadi. Bu qismda Delphi muhitida ilovalar yaratish, muhitning oynalari
va dasturni kompilatsiya qilish va ishga tushirish haqida aytib o`tdik. Delphida
konsol va windows ilovalar yaratish haqida gapirib o`tdik. Ikkinchi qismi
“Delphidagi asosiy komponentalar va ularning xususiyatlari, hodisalari” deb
nomlanib, bunda Delphida foydalaniladigan komponentalar va ularning qaysi
palitraga joylashganligi haqida gapirib o`tdik. Har bir komponentani xususiyatlari
va ularning vazifalari keltirilib, ayrimlarini misollar bilar yoritdik. Bu
komponentalarning hodisalarini qarab o`tdik. Bu hodisalar qachon va qay vaqtda
ishlashi haqida ham tushuntirdik. Bu komponentalar haqida ma`lumot bizlarga
zarur bo`lgani uchun buni ko`rib chiqdik. Sababi test variantlarni hosil qilishimiz
uchun dephi dasturlash muhitida shu komponentalardan foydalanamiz. Uchinchi
qismi “Delphi muhiti orqali MS Office bilan ishlash” deb nomlanib, bunda COM
texnologiyasi haqida gapirib o`tdik. Bu texnologiya orqali MS Office ning modelli
obyektlari va ularni dasturlash muhitlari bilan boshqarish haqida ko`rib o`tdik.
Word va Excel dasturiy vositalarini elementlarini tuzilmasi bilan ishlash haqida
ham g`apirib o`tdik.
44
II. Berilgan testlardan test variantlarini shakllantiruvchi dastur yaratish2.1. Delphida Offisni avtomatlashtirishning umumiy prinsiplari va word
dasturiy vositasi bilan ishlash
Ko`p masalali operatsion tizimlarning ajoyib tomonlardan biri bu- dasturlar
bir-biri bilan ma`lumot almashtira olish xususiyati bo`lib hisoblanadi. Windows
operatsion tizimi- bu qoidadan istisno emas va shunaqa ko`plab mexanizmlarni
taqdim etadi. Windows operatsion tizimda axborot yuborish va qayta ishlash,
operatsion tizimva dasturi orqali, hamda ilovalar o`rtasida yoki dinamik kutubxo-
nalar orqali amalga oshiriladi. Bu mexanizm windowsning birinchi versiyalaridan
boshlab ishlab kelmoqda va shu operatsion tizimlar uchun ishlangan dasturlarda
ko`rinadi. Windowsning birinchi versiyalarida obyektli dasturlash,
dasturlashtirishning asosiga aylandi, chunki operatsion tizimdagi har bir dastur
obyekt ham hisoblanadi. Operatsion tizimlar takomillasha boshlashi bilan
dasturlarning o`zaro mexanizmi ham takomillashdi. Axborot almashishning o`sib
borishi, DLL (Dynamic Link Library - dinamik bog`lanuvchi, protseduralar va
funksiyalar kutubxonasi) dan foydalanishi va DDE (Dynamic Data Exchange -
ma`lumotlarni dinamik almashtirish) larni zamonaviy texnologiyalarda ishlatish,
asosan OLE (Object Linking and Embedding- obyektlarga murojaatlarni va
obyektlarni o`zini ulash), COM (Component Object Model – obyektlarni
komponentli modeli), DCOM (Discributed Component Object Model -
obyektlarning taqsimlangan komponentli modeli) lar asosida qurilgan. Tashqi
dasturlar va kutubxonalardagi funksiyalar va protseduralardan foydalanish
yetarlicha bo`lmaganai uchun bu o`tish asos bo`lgan. Birinchidan, ko`plab
obyektlarni boshqarish zarurat kelib chiqqan, qaysikim dasturlar yoki hujjatlarni
o`ziga olgan va yagona xotiralar maydonida bajaruvchi dasturning joylashgan
bo`lishi yoki uning tashqarisida, hatto local tarmoqning boshqa kompyuterida
joylashishi mumkin. Masalaning bunday qo`yilishi, windowsning tuzilmasiga juda
katta o`zgarishlarni keltirishdan tashqari ilovalarni ishlab chiqaruvchi dasturlarni
45
ham o`zgartirdi. MS Office dasturlari, tashqi dasturlar orqali boshqarib bo`ladigan
obyekt-serverlar ko`rinishida bo`ldi va bu yerda COM va OLE mexanizmlari katta
rolni o`ynaydi.
COM modeli, ko`plab shu interfeysni qo`llaydigan dasturlarda ishlatiladigan
obyektlarni yaratishga yordam beradi. Tizimda maxsus rasmiylashtirilgan va
ro`yxatdan o`tgan dastur serverlari, COM obyektlari deb ataladi. Ular Exe
formatida yoki DLL modulida taqdim etiladi. Bu serverlar chaqiriluvchi dastur
manzilining sohasida (fazosida) yuklanishi va bajarilishi mumkin, mustaqil jarayon
ko`rinshida yoki tarmoqning boshqa kompyuterlarida bajarilishi mumkin
(taqsimlangan model COM - DCOM). Ular COM interfeysini qo`llovchi har
qanday tilda yozilishi shart. OLE Automation (OLE avtomatlashish )
texnologiyasi, COM texnologiyasini davom ettirayotgan bir qismidir. Uning farqi
shundaki, u COM imkoniyatlarini dasturlash tili kompilyatorlardan tashqari
interpritatorlarida va dasturning ishlash vaqtida ham metodlarni chaqiradi. Bu usul
kechikgan bog`lanih deb nomlanadi. Shu tariqa chaqirilgan metodlar sekin
bajariladi va shu obyektlar va ularning metodlari to`g`ri yozilganligini oldindan
tekshirib bo`lmaydi. Bu metodning yutug`i shundaki, kerak bo`lgan obyektni
dastrulash, dasturlash muhitini tanlanishiga bog`liq emasdir.
Delphi muhiti, serverlar avtomatizatsiyasini metodlarini chaqirishni qo`llab -
quvvatlaydi. Serverlar avtomatizatsiyasi shunday dastur sifatida qaraladiki, tashqi
dasturiy vositalarni avtomatlashtirish kontrollerlari orqali boshqara oladi. Word
yoki Excel bizning holda bu server, kontrollarlar esa dasturchi tomonidan ishlab
chiqiladi.
Buning uchun avtomatizatsiya obyektlariga murojaat qilish uchun Variant
tipidagi o`zgaruvchilar ishlatiladi. Dasturning bajarilish bosqichida avtomatizatsiy
serverining Variant tipidagi o`zgaruvchisiga, oldindan satr ko`rinishidagi yozilgan
buyruq yuboriladi. Misol tariqasida quyidagi dasturning bir bo`lagini ko`ramiz:
Internet Explorer dasturini yuklash
Uses ComObj;
46
Var IE:variant;Procedure TMainForm.ButtonlClick(Sender: TObject);beginIE:=CreateOleObject('InternetExplorer.Application');IE.Visible:=true; // Ikkita buyruqda birini tanlash kerakIE.Visible:=false; // va qaday ishlashini tekshirish kerak. //false ko`rinmasin, true ko`rinsin. . . end;
Variant tipidagi IE o`zgaruvchi hech qanday xususiyat va metodlarga ega
emas lekin, shunga qaramay dastur kompilatsiyasidan o`tadi va ishlaydi. Agar biz
Visible xususiyatining o`rniga boshqa xususiyatni bersak, IE ni qo`llab-
quvvatlamaydigan xususiyatni yozsak, kompilyator xatoni ko`rsatmaydi, lekin
ishlash jarayonida xatolik kelib chiqadi. Bu kech bog`lovchi xususiyatidir -
xussusiyatlar va metodlar dastur - serverning bajarish paytida tekshiriladi. Barcha
mexanizm, COM API hisobida ishlaydi. Ushbu ishimizda bir boshdan barcha
funksiya va protseduralarini chaqirishni ko`rib chiqishdan ma`ni yo`q. Bizning
asosiy maqsadimiz MS Office dasturlari Word va Excelda avtomatizatsiya
kontrollerlarini yaratish va ishlatishni o`rganishdir. Delphi muhitida yaratilgan
dasturlarda avtomatizatsiya kontrollerlarini ishlatib, Word va Exceldagi oddiy
ishiga o`xshab, mumkin bo`lgan elementlariga ega bo`lgan hujjat yaratishimiz
mumkin. Jadvallar, matnlar, diagrammalar va boshqa hujjatlarning komponentlari
xuddi foydalanuvchi yaratgandek bo`lib chiqadi.
Avtomatizatsiya kontrollerlariga o`tsak. Avtomatizatsiya kontrollerlari- MS
Office dasturlarini boshqara oladigan va Word va Excel muhitlarida hujjat
yaratilishini boshqara oladigan dastur. Bular to`g`ri ishlashi uchun, dastur-
kontroller quyidagi funksiyalarni bajarishi shart:
1. (Word, Excel) dasturini ishga tushgan yoki tushmagangini tekshirish.
2. Agar dastur ishga tushmagan bo`sa ishga tushirish.
3. Dastur yoki hujjat ustida kerakli murakkab ishlarni bajarish.
4. Hujjat va dasturni yopish.
5. Xotirani tozalash.
47
Aytib o`tilganidek, MS Office dasturlarining obyektli modeli cho`qqisida
turuvchi obyektlar yordamida hujjatlar va dasturlardan foydalanishimiz mumkin.
Ular yordamida biz hujjatlar va dasturlar ichki strukturasiga kirish huquqiga ega
bo`lamiz, shuning uchun avtomatizatsiya kontrollerlarni yaratishda faqat ulardan
foydalanishimiz mumkin. 2.1.1 va 2.1.2 jadvallarda shu obyektlar xarakteristikasi
bilan tanishib o`tamiz.2.1.2 – Jadval. MS Word Obyektlari
Identifikatorlar Qisqacha izohi
Word.Application
Word.Application.8(9,10)
Bu o`zgaruvchilar yordamida Application obyektiga
murojaat bo`ladi va Word ilovasi yuklanadi
Word.Document
Word.Document.8(9,10)
Word.Template.8
Bu o`zgaruvchilar yordamida Document oyektiga
ruxsat beriladi va Word ilovasi ishga tushadi va
yangi hujjat yaratiladi. Agar Word ilovasi ungacha
ishga tushgan bo`lsa, u holda shu ilova ichida yangi
hujjat yaratiladi2.1.1 – Jadval. MS Excel Obyektlari
Identifikatorlar Qisqacha izohi
Excel.Application
Excel.Application.8(9,10)
Bu o`zgaruvchilar yordamida Application
obyektiga murojaat bo`ladi va Excel ilovasi
yuklanadi
Excel.Addln Bu o`zgaruvchilar yordamida Excel ilovasi ishga
tushadi va Add-In maxsus obyekti yaratiladi
Excel.Chart
Excel.Chart.8
Bu o`zgaruvchilar yordamida Excel ilovasi ishga
tushadi va ishchi kitob yaratiladi va uning tarkibida
diagramma, diagrammali ish varog`i ham bo`lishi
mumkin
Excel.Sheet
Excel.Sheet.8
Bu o`zgaruvchilar yordamida Excel ilovasi ishga
tushadi va ishchi kitob yaratiladi va uning tarkibida
ish varoqlari bo`ladi
48
Delphi muhitida avtomatizatsiya kontrollerlari yaratishni ko`rib chiqdik.
Endi Office paketini tarkibida kiruvchi Word ilovasi bilan ishlashni ko`rib
chiqamiz.
Word.Application obyekti bilan ishlash.
Bunda biz MS Word matn muharriri uchun avtomatizatsiya kontrollerini
yaratishni ko`rib chiqamiz. Aytib o`tilganidek avtomatizatsiya kontrollerini
yaratish uchun Word dasturi obyekt modelidagi Appication obyekti uchun
foydalanish huquqi kerak bo`ladi (bundan foydalanish uchun Word.Application
identifikatori kerak bo`ladi).
Word.Application modelini yaratish, dasturning oynasini yuklash va
namoyish etish.
OLE obyekti mexanizmidan foydalanishga ijozat beruvchi funksiya
ComObj.pas kutubxonasiga joylashgan bo`lib u CreateOleObject funksiyasi orqali
chaqiriladi. Uning yagona argumenti satr identifikatori va u obyektga murojaatni
qaytaradi. Bu funksiyani ishlashini ko`rib o`tamiz.
Bir formaga ega bo`lgan yangi Delphi loyihasini yaratamiz. Forma modulida
ComObj kutubxonasini ishlatish uchun murojaat qilamiz (Uses ComObj) va
W:Variant o`zgaruvchisini e`lon qilamiz. Formada tugmani joylashtiramiz.
Formadagi tugmaning bosilish hodisasiga quyidagi dastur matnini yozamiz.
Word.Application obyektini yaratish
Uses ComObj;Var W:variant;Procedure TForm1.Button1Click (Sender:TObject);beginW:=CreateOleObject('Word.Application');end;
Agar dasturning shu fragmenti bajarilsa unda word dasturi ishga tushadi,
lekin uning oynasi monitor ekranida aks etmaydi. Kompyuter xotirasiga hamma
ichki obyektlar, kolleksiyalar va xususiyatlardan foydalanish huquqini beruvchi
Application obyekti yuklanadi. Hozirgi vaqtda bu obyektning faqat bitta xususyati
- Visible bizni qiziqtiradi. Agar uning qiymatini true deb olsak word dasturi oynasi
49
ko`rinadi. Bizning formamizga CheckBox1 komponentini joylashtiramiz, uning
sichqoncha tugmasini bosilish hodisasida quyidagi dastur kodini kiritamiz.
Word dasturi oynasi ko`rinishi berilishi
procedure TForm1.CheckBox1Click(Sender:TObject);beginW.Visible:=CheckBox1.Checked;end;
CheckBox1 obyekti holatini o`zgarishini ko`rob chiqsak, dastur oynasi goh
paydo bo`ladi, goh ekranda ko`rinmaydi. Dastur hech qanaqa ochiq hujjatlarsiz
xotiraga yuklangan (2.1.1-chizma).
2.1.1-chizma. Delphi orqali Word dasturni yuklash.
Hujjatni shakllantirish vaqtida Visible xususiyatini False qiymatida saqlash
va shakllantirilgandan so`ng true qiymati berilsa muvaffaqiyali bo`ladi deb
o`ylaymiz.
Shu yo`l orqali hisobotlar yaratishda vaqtini tejashimiz va dasturni ishlash
samaradorligini oshirishimiz mumkin. Dasturini ishini nazorat qilib nima natija
olishimizni testlash vaqtida monitorda ko`rsatib turgani yaxshi. Bunda Application
obyektini ish faoliyati testlanadi. Shuning uchun Visible:=True qiymat berib
qo`yamiz va Word hujjatlari ustiga ishni boshlaymiz.
Hujjat yaratish.
Shunday qilib, Application obyekti kompyuter xotirasiga yuklanadi va biz
undan W:Variant o`zgaruvchisi yordamida foydalanishimiz mumkin. Shu
50
obyektning xususiyatlarini o`rganib chiqamiz. Documents kolleksiyasiga
e`tiborimizni jalb qilamiz. U o`z ichiga hujjatlarni, ularning xususiyatlarini va ular
bilan ishlaydigan metodlarini oladi. Hozirgi vaqtda kolleksiya elementlari ochiq
hujjatlar hisoblanadi. Bu hujjatlarga murojaat qilishimiz uchun Item(doc:variant)
metodidan foydalanamiz. Bunda doc – kollektsiyadagi hujjatning nomi yoki
indeksi. Kolleksiyaning Count buyrug`ida, kolleksiya elementlari sonini bildiradi.
Agar Count=0 bo`lsa unda hech qanday ochiq hujjat yo`q. Yangi hujjat yaratamiz.
Buning uchun shu kolleksiyaning ADD metodidan foydalanamiz. Formaga
tugmani joylashtiramiz, tugma bosilish hodisasida quyidagi dastur matnini
yozamiz.
Hujjatlar kolleksiyasiga hujjatning yaratilishi
procedure TForm1.Button2Click(Sender: TObject);beginW.Documents.Add;end;
ADD metodi bajarilganidan so`ng dastur oynasida hujjat yaratiladi (2.1.2-
chizma). Documents kolleksiyasining ADD metodiga argument bilan yoki
argumentsiz ham murojaat qilsa bo`ladi. Argument bo`lmaganda, oddiy hujjat
yaratiladi. Argument bilan murojaat qilinganda shablon bo`yicha hujjat yaratiladi.
MS Office paketida bir nechta shablonlarni qo`yish imkoniyati mavjud. Shablonlar
…\MicrosoftOffice\Шаблоны da joylashgan. O`zining dasturlari uchun
qo`shimcha hujjat shablonalrini yaratish mumkin, masalan: soliq deklaratsiya
shabloni. Keyinchalik ADD metodini shablonga yo`llanma bilan ishlatshda osonlik
bilan kerakli hujatni yaratish mumkin. Yangi hujjatlar yaratishda shablonlar
ishlatilishi Delphi muhitidagi foydalanuvchi uchun qulay dasturlar yaratishda
yordam beradi. Shablon asosida yangi hujjat yaratamiz. Buning uchun tugmani
formaga joylashtiramiz va quyidagi dastur kodini kiritamiz:
51
2.1.2 – chizma. Add metodi yordamida argumentisiz, hujjat yaratilgan.
2.1.3 – chizma. Add metodi yordamida argumenti orqali, hujjat yaratilgan.
Shablon bo`yicha hujjat yaratish.
Procedure TForml.Button3Click(Sender: TObject);var dir_:string;beginGetDir(0,dir_);If not OpenDialog1.Execute then begin chdir(dir_); exit; end;chdir(dir_);W.Documents.Add(OpenDialog1.FileName);End;
Berlgan dastur kodi bo`lag,i dialoglar oynasini ochishga va kerak bo`lgan
shablonni tanlash orqali yangi hujjatni yaratishda yordam beradi. …\Microsoft
Office\ Шаблоны\Другие документы papkasidan Contemporary Fax.dot faylini
tanlaymiz. ADD metodining bajarilgan natijasi 2.1.3-chizmada ko`rsatilgan. Agar
52
avvalroq yaratilgan hujatga o`zgartirishlar kiritish kerak bo`lsa. Documents
kolleksiya metodlari yordaimda uni o`zgartiramiz.
Hujjatni ochish.
Oldinroq yaratilgan hujatlarni Open metodi yordamida ochish mumkin.
Metodni chaqirishda ko`plab argumentlar kiritishimiz mumkin, lekin ularning eng
asosiysi bu faylning ismi va yo`liga murojaatdir. Oldinroq ochilgan hujatni
ochamiz. Dasturning matn bo`lagi quyidagi ko`rinishda bo`ladi.
Hujjatning ochilishi:
Procedure TForml.Button4Click(Sender:TObject);Var dir_:string;beginGetDir(0, dir_);If not OpenDialog2.Execute then begin chdir(dir_); exit; end;chdir(dir_);W.Documents.Open(OpenDialog2.FileName);end;
Berilgan kodning natijasi 2.1.4-chizmada ko`rsatilgan.
Documents kolleksiyasining Open metodini ko`plab argumentlari yordamida
chaqirish mumkin. VisualBasic ma`lumot tizimiga murojaat qilamiz va bu
metodning sintaksis va argumentlarini ko`rib chiqamiz (2.1.3 - jadval).
2.1.4 – chizma. Open metodi orqali hujjatni ochish
Open metodini sintaksisi
53
Documents.Open( FileName, ConfirmConversions, ReadOnly,
AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format)
2.1.3 – jadval. Open metodining argumetlari va uning vazifalariArgumenti Tipi Ma`nosi
FileName String Fayl nomi va manzili
ConfirmConversions Boolean False—DOC formatidan farqli fayllarni
ochish vaqtida faylni qayta formatini
aniqlash muloqot oynasini chiqmasligi.
True qiymatida muloqot oynani chiqishi
Readonly Boolean True—"только для чтения" rejimida
hujjatni ochish
AddToRecentFiles Boolean True—File menyusining oldin ochilgan
fayllar ro`yxatiga qo`shilishi
PasswordDocument String Hujjatni ochilishidagi paroli
PasswordTemplate String Shablonni ochilishidagi paroli
Revert Boolean True—agar hujjat ochiq bo`lsa,
saqlangan holatidagi hujjat asosida
ochilishi
WritePasswordDocument String Hujjatni faylga salanishidagi paroli
WritePasswordTemplate String Shablonni faylga salanishidagi paroli
Format Son Hujjatni ochishdagi formati
Open metodini chaqirganda ba`zi argumentlari e`tiborga olmasligimiz
mumkin. Masalan: W.Documents.Open(FileName) chaqiruvchi qo`himcha imko-
niyatlarsiz faylni ochadi. Agar chaqiruv sintaksisini ozgina o`zgartirsak.
W.Documents.Open(FileName:= 'C:\Documents.doc'); unda ham natija bir xil
bo`ladi. Agar bizga "только для чтения" rajimiga hujatni ochish buyurilsa,
quyidagi sintaksisdan foydalanishimiz mumkin.
54
W.Documents.Open(FileName:='с:\Документ1.doc', Readonly:=True);
Formamizga tugmani joylashtiramiz va hujjatlarni "только для чтения"
rejimida ocha oladigan dastur kodini yozamiz.
Procedure TForml.Button5Click(Sender: TObject);Var dir_:string;beginGetDir(0,dir_);If not Open Dialog2.Execute then begin chdir(dir_); exit; end;chdir(dir_);W.Documents.Open(OpenDialog2.FileName,Readonly:=true);end;
Agar hujjatni ochish uchun ikkita emas uchta argument kerak bo`lsa, unda
sintaksis bir yozuvga o`zgaradi. Masalan: "только для чтения" rejimida parol
bilan himoyalangan hujatni ochamiz.
W .Documents.Open( FileName:='с :\Документ1.dос', Readonly:=True,
PasswordDocument:='123' ) ;
Bu yerda “123” parol. E`tiboringizni ADD metodining oxirgi argumenti-
Format ga qaratamiz. Bu argumentning butun sonli qiymatdan iborat bo`ladi va
ochiladigan hujjatning formatini aniqlaydi.
2.1.4 – jadval. Format argumentining qiymati va hujjat formatlariO`zgarmas Qiymat Hujjatning ochilish formati
WdOpenFormatAuto 0 Avtomatik tanlanishi
WdOpenFormatDocument 1 Word hujjati (DOC kengaytmali
fayl)
WdOpenFormatRTF 3 RTF formatidagi hujjat (RTF
kengaytmali fayl)
WdOpenFormatTemplate 2 Word Shabloni(DOT kengaytmali
fayl)
WdOpenFormatText 4 Matn (ТХТ kengaytmali fayl)
55
WdOpenFormatUnicodeTex
t
5 Kodlangan matn (ТХТ kengaytmali
fayl)— UNICODE formatida
TXT formatli matnli faylni ochamiz. Buning uchun formaga yangi tugma
qo`yamiz va quyidagi dastur kodini yozamiz:
TXT formatida hujjatni ochish.
Procedure TForm1.Button7Click(Sender:TObject);const WdOpenFormatText:=4;Var dir_:string;a_:integer;eee_:string;beginGetDir(0,dir_);If not OpenDialog3.Execute then begin chdir(dir_); exit; end;chdir(dir_);W.Documents.Open(OpenDialog3.FileName, Format:=wdOpenFormatText);end;
Bu dasturning ishga tushirganda va hozirgi yozilgan protsedura ishga
tushganda natijasi quyidagicha bo`ladi.
2.1.5 – chizma. Open metodi orqali TXT formatli hujjatni ochish
Hujjatni saqlash
Hujjatni saqlashni eng oson yo`llaridan bir bu Save metodini chaqirish orqali
hujjatini saqlashdir. Masalan: W.ActiveDocument.Save. Agar hujjat diskda
saqlangan bo`lsa bu yo`lni ishlatish qulayroqdir. Biz bu metod yordamida
56
yaratilgan hujjatni saqlamoqchi bo`lganimizda word dasturi tomonidan
aktivlashgan dialog oynasi ochiladi (Hujjatni saqlash muloqot oynasi).
2.1.6 – chizma. Save metodi orqali yangi hujjatni saqlash
Agar biz dialogni saqlamasdan yopsak, xatolik kelib chiqadi (2.1.7 –
chizma). Xatolar paydo bo`lishini oldini olish uchun hujatni saqlash protsedurasi
paytida istisno vaziyatlarni ko`rib chiqish kerak.
2.1.7 – chizma. Save metodi bajarilish vaqtidagi xatolik
Delphi tilidagi try…except…end konstrukisayisini ishlating. Hujjatni
saqlash dialog oynasini chiqarish kerak, lekin xatolik sodir bo`lgan vaqtda uni
oldini olish mumkin. Xatolardan qochishning samarali usullaridan biri “hujjat
saqlangan yoki yo`q” tekshiruvi va SaveAs metodini ishlatish kerak. Ochilgan
hujjatning diskga saqlanganligini tekshirish uchun Saved hujjatning xususiyatini
ishlating. Agar u True qiymatni qabul qilsa unda hujjat saqlangan. Agar False
bo`lsa hujjat saqlanmagan.
Quydagi dastur matnini ko`ramiz
Procedure TForm1.Button8Click(Sender:TObject);
57
begin
if W.ActiveDocument.Saved then
Messagebox(handle,'Hujjat saqlangan!' ,'Ogoh bo`ling!',0) ;
if notW.ActiveDocument.Saved then
Messagebox(handle,'Hujjat saqlanmagan!',' Ogoh bo`ling!',0) ;
end;
Bu dasturning natijasi quyidagilardan birini chiqaradi
2.1.8 – chizma. Saved metodi orqali tekshirish
Agar qo`shimcha yaratilgan hujjat saqlanmagan bo`lsa uning diskga yozish
uchun SaveAs metodidan foydalanamiz. VisualBasic tilining tasnifida u quyida-
gicha kiritilgan.
ActiveDocument.SaveAs(FileName, FileFormat, LockComments, Password,
AddToRecentFiles, WritePassword, ReadOnlyRecommended,
EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,
SaveAsAOCELetter)
SaveAs metodida argumentlar rejimi va saqlanayotgan hujjat formatini
aniqlaydi. Ularni metodni chaqirganda word dasturini oddiy foydalanuvchi
rejimidagidek bir xil natijaga ega. Metodning argumentlari, ularning tiplari va
funksional qo`llanilishlari 2.1.5-jadvalda berilgan.2.1.5 – jadval. SaveAs metodining argumenti va vazifalari
Argumenti Tipi Ma`nosi
FileName String Faylning ismi va joylashuvi
FileFormat Son Faylning formati, Open metodida
ko`rildi
58
LockComments Boolean True – izohlarni saqlamaslik
Password String Hujjatning ochilishi uchun parol
AddToRecentFiles Boolean True—File menyusining oldin
ochilgan fayllar ro`yxatiga qo`shilishi
WritePassword String Hujjatning salanishi uchun parol
ReadOnlyRecommended Boolean True- keyingi safar yopmasdan
hujjatni ochishga “o`qish uchun
ochish”
EmbedTrueTypeFonts Boolean True- Hujjatni salagan vaqtda
TrueType shriftda hujjatning barcha
matnlaini o`tkazish
SaveNativePictureFormat Boolean Windows OT da qo`llanilib
bo`lmaydi. Grafikani import qilish.
True – Windows da ishlatiladigan
grafikalarni import qilish
SaveFormsData Boolean True-Hujjat formasini matnsiz saqlash
SaveAsAOCELetter Boolean Apple Machintosh kompyuterlari
uchun mo`ljallangan Word
versiyalarida ishlatiladi
SaveAs metodini chaqirishda faqat bitta emas balki bir nechta
argumentlardan ham foydalanish mumkin. Odatda bitta fayl nomi va manzili
argumentidan foydalaniladi.
2.3. Test variantini formalari va uning modullari.Biz tayyorlagan dasturimizda bitta forma joylashtirilgan bo`lib, formaning
ko`rinishi (2.3.1-chizma) da ko`rsatilgan.
59
2.3.1-chizma. Dasturning ko`rinish oynasi.
Dasturimizda 1 ta formadan foydalangan bo`lib ko`p formali matn yozishni
oldini oldik. Lekin ko`p oynali formalar o`rniga PageControl komponentasidan
foydaladik. Bu PageControl komponentasiga 6 ta bo`lim yaratdik va har bir bo`lim
bitta page bo`lib ular quyidagilardan iborat:
1. Test fayllari
2. Tasdiqlash
3. Yordam
4. Talaba uchun testni generatsiyalash
5. Mualliflar
6. Testni shakllantirish
Test fayllari deb nomlangan Pageda, quyidagi komponentlarni joylashtirdik.
Label, SpeenEdit, SpeedButton, ScrollBox va Edit komponentalar pagega bor
(2.3.2-chizma). Bularning vazifasi quyidagidan iboratdir.
60
2.3.2-chizma. Dasturning test fayllari qismi.
Formadagi va ScrollBox dagi Labellarda izoh sifatida foydalanilgan.
Formadagi SpeenEdit komponenti- testdagi fayllarni soni, Variantdagi savollar
sonini olish uchun ishlatilgan. Natural son qabul qila oladi. Test fayllaro soni 10
tagacha olsak yetarli deb o`yladim.
2.3.3-chizma. Test fayllari bo`limi 10 ta fayl tanlashning ko`rinishi.
SpeenEdit komponentasining qiymati orqali test fayllar sonini boshqariladi
va fayllarni sonini kamaytirish imkoniyati mavjuddir. Buning uchun quyidagi
change procedura hodisasi yoziladi:
procedure TForm1.TestFaylCountChange(Sender: TObject);var
61
n,i:integer;begin n:=TestFaylCount.Value; For i:=1 to 10 do begin
if i>n then begin (FindComponent('F'+IntToStr(i)) As TEdit).Visible:=False; (FindComponent('B'+IntToStr(i)) As TSpeedButton).Visible:=False; (FindComponent('UT'+IntToStr(i)) As TEdit).Visible:=False; (FindComponent('T'+IntToStr(i)) As TSpinEdit).Visible:=False; (FindComponent('L'+IntToStr(i)) As TLabel).Visible:=False; (FindComponent('F'+IntToStr(i)) As TEdit).Text:=''; end else begin (FindComponent('F'+IntToStr(i)) As TEdit).Visible:=True; (FindComponent('B'+IntToStr(i)) As TSpeedButton).Visible:=True; (FindComponent('UT'+IntToStr(i)) As TEdit).Visible:=True; (FindComponent('T'+IntToStr(i)) As TSpinEdit).Visible:=True; (FindComponent('L'+IntToStr(i)) As TLabel).Visible:=True; end; end;end;
ScrollBoxda mos ravishda faylning joylashgan manzilini qabul qilish uchun
Edit komponentasiga olishimiz uchun SpeedButton komponetasining OnClick
hodisasidan foydalanganmiz, ammo faylni tanlashimiz uchun esa OpenDialog
komponentasi kerak bo`ladi. Dastur matni quyidagicha:
procedure TForm1.B1Click(Sender: TObject);var B:TSpeedButton; F:TEdit; Num,name1,s:String;beginif (Sender is TSpeedButton) then B:=(Sender as TSpeedButton);Name1:=B.Name;Num:=Copy( Name1, 2, (Length(Name1)-1) );F:=(FindComponent('F'+Num) As TEdit);if OD.Execute then begin s:=F.Text; F.Text:=OD.FileName; if s=F.Text then F1Change(F);
62
end;end;
Fayl tanlangandan keyin esa, U fayl bizning talabga javob berishini
tekshirishimiz zarur bo`ladi. Bu ishni qachon bajarishimiz kerak deb o`ylaysiz?
Albatta fayl manzili aniq bo`lgandan keyin. Bu hodisa fayl manzili yozilgandan
Edit komponentasi Qiymati o`zgargan paytda bajarilishi kerak va u
quyidagicha:
procedure TForm1.F1Change(Sender: TObject);var L:TLabel; F,UT:TEdit; Num,name1:String; W,D,Table:Variant; i,n,r,c:integer; ch:boolean;beginif (Sender is TEdit) then F:=(Sender as TEdit);Name1:=F.Name;Num:=Copy( Name1, 2, (Length(Name1)-1) );UT:=(FindComponent('UT'+Num) As TEdit);L:=(FindComponent('L'+Num) As TLabel);if F.Text<>'' thenbeginif FileExists(F.Text) then begin // fayldagi wordda jadvallar to`griligini aniqlash try try ch:=false; W:=CreateOleObject('Word.Application'); //ShowMessage(F.Text); W.Documents.Open(FileName:=F.Text,ReadOnly:=true); //W.Visible:=true; n:=W.ActiveDocument.Tables.Count; //ShowMessage(IntToStr(n)); if n<=0 then begin UT.Text:='0'; L.Caption:=''; end else begin for i:=1 to n do begin r:=W.ActiveDocument.Tables.item(i).Rows.Count; c:=W.ActiveDocument.Tables.item(i).Columns.Count; if not((r=5) and (c=1)) then
63
begin ch := true; break; end; end; if ch then begin L.Caption:=IntToStr(i)+' - jadvalda xatolik'; UT.Text:=''; end else begin L.Caption:='OK'; UT.Text:=IntToStr(n); end; end;
except L.Caption:='Fayl bilan ishlashga xatolik'; UT.Text:=''; end; finally W.Quit; W:=UnAssigned; end;
end else begin UT.Text:=''; L.Caption:='Fayl mavjud emas'; end;endelsebeginL.Caption:='';UT.Text:='';end;end;
Test faylidagi test jadvallari tekshirilgandan so`ng umumiy testlar soni
aniqlanadi va Editga yoziladi. Bundan so`ng siz umumiy testlar sonidan ko`p
qiymat olsihga ruxsat bermasligingiz kerak bo`ladi. Buning uchun quyidagi kod
berilishi kerak
procedure TForm1.UT1Change(Sender: TObject);
64
var L:TLabel; UT:TEdit; T:TSpinEdit; Num,name1:String;begin
if (Sender is TEdit) then UT:=(Sender as TEdit);Name1:=UT.Name;Num:=Copy( Name1, 3, (Length(Name1)-2) );if (Num<>'11') then T:=(FindComponent('T'+Num) As TSpinEdit);L:=(FindComponent('L'+Num) As TLabel);//showmessage('L'+Num);if UT.Text<>'' thenbegin//endelsebeginif (Num<>'11') then T.Value:=0;L.Caption:='';end;end;
Bunda testlar soni aniq bo`ldi va har biriga nechta testligi ko`rsatildi. Buning
natijasi Variantdagi testlar soniga bo`rib tushishi kerak. Bu quyidagicha
procedure TForm1.T1Change(Sender: TObject);var T:TSpinEdit; UT:TEdit; Num,name1:String; i,s:integer;beginif (Sender is TSpinEdit) then T:=(Sender as TSpinEdit);Name1:=T.Name;Num:=Copy( Name1, 2, (Length(Name1)-1) );UT:=(FindComponent('UT'+Num) As TEdit);if (UT.Text<>'') thenbegin if T.Value>StrToInt(UT.Text) then T.Value:=0; if T.Value<0 then T.Value:=0;endelsebeginT.Value:=0;end;s:=0;For i:=1 to 10 do
65
s:=s+(FindComponent('T'+IntToStr(i)) As TSpinEdit).Value;TestCount.Value:=s;End;
Bu jarayonni 10 yoki 11 marta yozmaslik uchu bizlar dastur matnini
umulashtirganmiz sababi qaysi obyekt kelishi oldindan aniqmasligidadir. Bundan
so`ng esa Qolgan komponentalarning xuddi shu hodisasiga joriy hodisani uladik.
Agar biz testlar faylini tanlaganimizdan so`ng, u biz qo`ygan fayl tayyorlash
talabiga to`g`ri kelsa, “OK” degan qiymat Label komponentasiga namoyish etiladi.
Aks holda, qaysi tartib nomeridagi fayl bo`lsa, o`sha faylning tartib raqami bilan
shu jadvalda xatolik mavjud degan yozuv “Fayl to`g`riligining tasdig`i” sohasida
ko`rinadi. Masalan: birinchi faylga talabga mos tarzdagi faylni tanlasak, bizga
“OK” yozuvi va ikkinchi faylga noto`g`ri faylni joylashtirsak, “n-jadvalda xatolik
” yozuvi Labelda ko`rinadi (2.3.4-chizma).
2.3.4-chizma. Test fayllariga misol dasturi.
Variantdagi savollar soniga umumiy savollardan nechtasi tanlangan bo`lsa, shu
qiymatlarning yig`indisi natija sifatida kelib tushadi. 2.3.3-rasmda ko`ringanidek,
“umumiy savollar soni = 11”, “nechta test = 0” va “Variantdagi savollar soni =0” .
Agar “nechta test =4” deb bersak, avtomatik tarzda “Variantdagi savollar soni = 4”
bo`ladi (2.3.5-chizma).
66
2.3.5-chizma. Test fayliga test sonini aniqlash.
Agar dasturda nechta fayl tanlangan bo`lsa ularni ishlatish majburiydir. Ya`ni
test fayli tanlangandan keyin, shu faylning umumiy testlar sonidan nechta test deb
nomlanuvchi sohasining qiymati nolga teng bo`lishi mumkin emas .
Tasdiqlash oynasidagi “Sarlavha” sohasida tayyorlangan shablon test
yaratilayotgan vaqtda test variantlarining sarlavha qismida va “Tasdiqlayman”
dagi shablon tasdiqlash qismida chiqadi(2.3.6-chizma).
2.3.6-chizma. Tasdiqlash va Sarlavha oynalarining ko`rinishi.
Talaba uchun testni generatsiyalash oynasi. Biz bilamizki, test yaratuvchi
bizning talablarga mos ravishda to`g`ri javoblar keltirilgan test fayllarini
topshiradi. Masalan: barcha to`g`ri javoblar ikkinchi satr birinchi javoblar kalitida
ko`rsatilgan bo`lsa, bu javoblarni talaba o`zi izlanishi uchun uni generatsiyalash
(o`rin almashtirish) usuli yordamida yangi test variantlarini hosil qilib, talaba
67
uchun tayyorlab beradi. Buning uchun “Talaba uchun testni generatsiyalash”
oynasidan foydalanamiz (2.3.7-chizma).
2.3.7-chizma. Talaba uchun testni generatsiyalash oynasi.
Bu oynada “ Test fayli manzili va uni tanlash” sohasini SpedButton
orqali tanlashimiz kerak va “umumiy soni” nomli sohasida avtomatik bor
bo`lgan umimiy test sonining qiymati tushadi. “Fayl to`g`riligini tasdig`i”
sohasida faylning barcha talablari bajarilsa “OK” yozuvi, fayl talabga javob
bermasa jadvaldagi xatolik haqida yozuv chiqadi. Agar foydalanuvchi faylni
tanlamasdan “Berilgan test faylini talaba uchun javoblarni almashtirib ber”
tugmasini bosganda, “Test faylini tanla!”degan xabar oynasi ekranga
namoyish etiladi( 2.3.8-chizma). Foydalanuvchi talabga mos faylni tanlab
“Berilgan test faylini talaba uchun javoblarni almashtirib ber” tugmasini
bosgandan so`ng, dastur test variantlarini generatsiya qilib beradi.
( 2.3.8-chizma). Fayl tanlamasdan, “Berilgan test faylini talaba uchun
javoblarni almashtirib ber” tugmasini bosgandagi chiquvchi xabar oynasi.
68
Yordam - bunda foydalanuvchi uchun dasturni ishlatish va test variantlari
fayllarining tayyorlanishiga qo`yiladigan talablar haqidagi ko`rsatmalar shu
tugmani bosganda, batafsil yoritib beriladi (2.3.1-chizma).
Mualliflar-bu soha tanlanganida dasturjning mualliflari haqidagi
ma`lumotlar oynasi ekranda namoyish etiladi(2.3.9-chizma).
2.3.9-chizma. Mualliflar oynasi.
Testni shakllantirish oynasi orqali biz test variantlarini shakklantira
olamiz (2.3.10-chizma). Bu oynada „Variantlar soni“ sohasida variantlar
sonini kiritib, „Variantlar joylashadigan katalog“ sohasidan testni yangi
manzilini ko`rsatib, „Tayyorlash“ tugmasi bosilsa, test variantlarini
shakllantirib beradi.
69
2.3.10-chizma. Testni shakllantirish oynasi.
Bu oynada test variantlarini shakllantirish bilan bir qatorda testni generatsiya
qilib, testning javob kalitlarini ham shakllantirib beradi.
Biz testni shakllantirayotgan vaqtimizda tanlagan faylimizga murojaat
qilmasak, bizning ekranda “ Hamma test fayllari to`g`ri tanlanmagan!! Test fayllari
bo`limidan fayllarga e`tibor ber” degan xabar oynasi chiqadi(2.3.11, a- chizma).
a)
b)
2.3.11 – chizma.
Agar foydalanuvchi tanlagan faylining umumiy savollari sonidan “nechta test =
0” bo`lsa, foydalanuvchining dastur oynasida “Hamma test fayllari kerak emasmi?
0 ta ham test bo`lishi mumkinmi? Oka!!!” deb nomlangan xabar ekranga
chiqadi(2.3.11, b- chizma).
Dastur uchun talab qilingan fayl talabga javob berish yoki bermasligini
tekshirishimiz uchun bizdan ko`pgina vaqtni talab qiladi. Buni oldini olish
70
maqsadida word dasturimizga tekshiruvchi makrosni yozamiz va shu makrosni
chaqirib ishlatamiz.
Test shaklini tayyorlash uchun kod qismi
// Test variantini tayyorlashtry try W:=CreateOleObject('Word.Application'); //W.visible:=true; For i:=1 to n do begin W.Documents.Open(FileName:=(FindComponent('F'+IntToStr(i))As TEdit).Text,ReadOnly:=true); D[i]:=W.ActiveDocument; DUT[i]:=StrToInt((FindComponent('UT'+IntToStr(i)) As TEdit).Text); DT[i]:=(FindComponent('T'+IntToStr(i)) As TSpinEdit).Value; end; W.Documents.Add; Kalit:=W.ActiveDocument; Kalit.PageSetup.Orientation := 1; Kalit.PageSetup.TopMargin := 28; Kalit.PageSetup.BottomMargin :=28; Kalit.PageSetup.LeftMargin :=28; Kalit.PageSetup.RightMargin := 28; Kalit.Range.InsertBefore(' Testlarning kalitli javob fayli '); MyRange:=Kalit.Range(Kalit.Range.End-1,Kalit.Range.End-1); Kalit.Tables.Add( Range:=MyRange, NumRows:=TestCount.Value+1, NumColumns:=VariantCount.Value+1); Kalit.Range.InsertAfter(' '); Kalit.Tables.item(1).Range.Font.Size := 12; Kalit.Tables.item(1).Range.Font.Name := 'Times New Roman'; Kalit.Tables.item(1).Columns.Item(1).Width:=56; Kalit.Tables.item(1).AutoFitBehavior(2); Kalit.Tables.item(1).Borders.Enable:=true; Kalit.Tables.item(1).Cell(1, 1).Range.Text:='Test \ variant'; For i:=2 to TestCount.Value+1 do Kalit.Tables.item(1).Cell(i, 1).Range.Text:=IntToStr(i-1); Kalit.Tables.item(1).Rows.Item(1).Range.Orientation:= wdTextOrientationUpward; For i:=2 to VariantCount.Value+1 do begin //Kalit.Tables.item(1).Cell(1, i).Range.Orientation:= wdTextOrientationUpward; Kalit.Tables.item(1).Cell(1, i).Range.Text:=IntToStr(i-1); end; Kalit.Tables.item(1).Cell(1, 1).Range.Orientation:= wdTextOrientationHorizontal; if FileExists(Path.Text+'\Kalit.doc') then DeleteFile(Path.Text+'\Kalit.doc');
71
Kalit.SaveAs(Path.Text+'\Kalit.doc'); For i:=1 to VariantCount.Value do // varian sonicha begin W.Documents.Add; D2:=W.ActiveDocument; D2.PageSetup.Orientation := 0; D2.PageSetup.TopMargin := 28; D2.PageSetup.BottomMargin :=28; D2.PageSetup.LeftMargin :=56; D2.PageSetup.RightMargin := 28; D2.Range.InsertBefore(' Test variant № '+IntToStr(i)); D2.Range.InsertParagraphAfter; D2.Range.InsertAfter(' '); For j:=0 to Memo1.Lines.Count-1 do begin D2.Range.InsertParagraphAfter; D2.Range.InsertAfter(Memo1.Lines[j]); end; D2.Range.InsertParagraphAfter; D2.Range.InsertAfter(' '); For j:=0 to Memo2.Lines.Count-1 do begin D2.Range.InsertParagraphAfter; D2.Range.InsertAfter(Memo2.Lines[j]); //D2.Range.ParagraphFormat.Alignment:=1; end; For j:=3+Memo1.Lines.Count to D2.Range.Paragraphs.Count do D2.Paragraphs.Item(j).Range.ParagraphFormat.Alignment:=1; D2.Range.InsertParagraphAfter; D2.Range.InsertAfter(' '); MyRange:=D2.Range(D2.Range.End-1,D2.Range.End-1); D2.Tables.Add( Range:=MyRange, NumRows:=5*TestCount.Value, NumColumns:=1); D2.Range.InsertAfter(' '); D2.Tables.item(1).Range.Font.Size := 12; D2.Tables.item(1).Range.Font.Name := 'Times New Roman'; D2.Tables.item(1).AutoFitBehavior(2); D2.Tables.item(1).Borders.Enable:=true; // Test yozish Cur:=1; z:=1; For j:=1 to TestFaylCount.Value do // test faylicha begin For x:=1 to DT[j] do // fayldan nechta test olish begin b:=RandomRange(1,DUT[j]); D[j].Activate; D[j].Tables.item(b).Cell(1, 1).Range.Copy; D2.Activate;
72
D2.Tables.item(1).Cell(Cur, 1).Select; W.Selection.Paste; W.Selection.Range.InsertBefore( IntToStr(z)+'. '); D2.Tables.item(1).Cell(Cur, 1).Range.Font.Bold:=true; s:=Random(23); For y:=1 to 4 do begin D[j].Activate; D[j].Tables.item(b).Cell(y+1, 1).Range.Copy; D2.Activate; D2.Tables.item(1).Cell(Cur+test[s].j[y], 1).Select; W.Selection.Paste; W.Selection.Range.InsertBefore(Chr(64+test[s].j[y])+ ') '); end; Kalit.Tables.item(1).Cell(z+1, i+1).Range.Text:=Chr(64+test[s].j[1]); inc(Cur,5); inc(z); end; end; // Test yozish D2.Tables.item(1).Range.Font.Size := 12; D2.Tables.item(1).Range.Font.Name := 'Times New Roman'; D2.Tables.item(1).select; W.Selection.Rows.ConvertToText(Separator:=wdSeparateByParagraphs, NestedTables:=True) ; W.Selection.ParagraphFormat.SpaceBefore := 0; W.Selection.ParagraphFormat.SpaceBeforeAuto := False; W.Selection.ParagraphFormat.SpaceAfter := 0; W.Selection.ParagraphFormat.SpaceAfterAuto := False; W.Selection.ParagraphFormat.LineSpacingRule := wdLineSpaceSingle; if FileExists(Path.Text+'\'+IntToStr(i)) then DeleteFile(Path.Text+'\'+IntToStr(i)); D2.SaveAs(Path.Text+'\'+IntToStr(i)); D2.Close(false); end; For j:=1 to TestFaylCount.Value do D[j].Close(False); Kalit.Close(true); except ShowMessage('Fayl bilan ishlashga xatolik'); end;finallyW.Quit;W:=UnAssigned;end;ShowMessage(' Test variantlari ko`rsatilgan'+#10+ Path.text+#10+ 'Katalogida hosil bo`ldi.Omad!!! ');
Talaba uchun testni generatsiya qilish kodi
73
// Test faylini talaba uchun generatsiya qilish qismiif FileExists(F11.Text) then begin try try W:=CreateOleObject('Word.Application'); //W.visible:=true; W.Documents.Open(FileName:=F11.Text,ReadOnly:=true); D:=W.ActiveDocument; n:=D.Tables.Count; W.Documents.Add; D2:=W.ActiveDocument; D2.PageSetup.Orientation := 0; // 1; D2.PageSetup.TopMargin := 28; D2.PageSetup.BottomMargin := 28; D2.PageSetup.LeftMargin := 56; D2.PageSetup.RightMargin := 28; For i:=1 to n do begin MyRange:=D2.Range(D2.Range.End-1,D2.Range.End-1); D2.Tables.Add(Range:=MyRange,NumRows:=5,NumColumns:=1); D2.Range.InsertAfter(' '); D2.Tables.item(i).Range.Font.Size := 14; D2.Tables.item(i).Range.Font.Name := 'Times New Roman'; D2.Tables.item(i).AutoFitBehavior(2); D2.Tables.item(i).Borders.Enable:=true; // Satr,Ustun D.Activate; D.Tables.item(i).Cell(1, 1).Range.Copy; D2.Activate; D2.Tables.item(i).Cell(1, 1).Select; W.Selection.Paste; W.Selection.Range.InsertBefore( IntToStr(i)+'. '); D2.Tables.item(i).Cell(1, 1).Range.Font.Bold:=true; t:=Random(23); For j:=1 to 4 do begin D.Activate; D.Tables.item(i).Cell(j+1, 1).Range.Copy; D2.Activate; D2.Tables.item(i).Cell(test[t].j[j]+1, 1).Select; W.Selection.Paste; W.Selection.Range.InsertBefore(Chr(64+test[t].j[j])+ ') '); end; end; s:=ExtractFilePath(F11.Text); s1:=ExtractFileExt(F11.Text); s2:=ExtractFileName(F11.Text); s2:=Copy(s2,1,Length(s2)-Length(s1)); s:=s+s2+'TalabaUchun'+s1;
74
if FileExists(s) then DeleteFile(s); D2.SaveAs(s); D2.Close(false); D.Close(false); ShowMessage('Berilgan test fayli'+#10+ s+#10+ 'Manzilda saqlandi. Omad!!!'); except ShowMessage('Fayl bilan ishlashga xatolik'); end; finally W.Quit; W:=UnAssigned; end; // Test faylini talaba uchun generatsiya qilish qismi
2.4. Test variantini yaratuvchi dasturidan foydalanish uchun ko`rsatma.
Biz talabalarning bilimini tekshirish va ularning bilimini to`gri baholash
maqsadida turli xildagi test variantlaridan foydalanamiz. Bu test variantlarini
yaratishda test yaratuvchidan ko`p vaqt va mashaqqatni talab qiladi. Bunday
ishlarni yanada osonlashtirish maqsadida ushbu dasturni ishlab chiqdik. Yaratgan
dasturimizning yana bir afzallik tomonlaridan biri murakkab tipdagi matnlarni,
formulalarni ham o`qiy oladi. Berilgan testlardan, test variantlarini
shakklantiruvchi dasturdan foydalanish uchun bir nechta talablar qo`yilgan. Shu
talablar omadli bajarilsa, foydalanuvchi bu dasturdan samarali foydalanishi
mumkin. Aks holda, dasturda xatolik ro`y bergani haqidagi xabar sizga namoyish
etiladi. Agar siz dasturdan foydalanayotgan vaqtingizda biror narsaga
tushunmasangiz ushbu yordam tugmasi orqali barcha savollaringizga javob
olishingiz mumkin bo`ladi.
Dasturni foydalanish qo`llanmasi (talablari) quyidagilardan iborat:
Biz dasturning .exe faylini ishlatgandan so`ng, bizga quyidagi oyna ochiladi
(2.4.1-chizma).
75
2.4.1-chizma. Dasturning ko`rinish oynasi.
Bu oyna 6 bo`limdan iborat bo`lib, har bir bo`limning o`z vazifasi belgilab
berilgan va quyidagilardan iborat:
7. “Test fayllari” oynasini tanlaganimizdan so`ng, uning “Test fayli
soni” sohasida fayllar soni ko`rsatiladi. Test fayllar sonini boshqariladi va 10
tagacha fayllarni tanlash imkoniyati bor. Tanlangan fayllarni o`chirish imkoniyati
mavjuddir. Bizga mos ravishda faylni tanlash uchun Test fayllari soni, variantdagi
savollarning “umumiy soni” va shu umumiy savollardan”Nechta test” olish
kerakligi ko`rsatiladi. “Fayl to`g`riligini tasdig`i” uchun tanlangan fayl talabga
javob berishi, yoki nima uchun javob bermasligi haqida ma`lumotchiqadi (2.4.2-
chizma).
76
2.4.2-chizma. Test fayllari bo`limining ko`rinishi.
Variantdagi savollar soniga umumiy savollardan nechtadan test olinishi
ko`rsatilganligini jami soni chiqadi. Agar biz testlar faylini tanlaganimizdan so`ng,
u biz qo`ygan fayl tayyorlash talabiga to`g`ri kelsa, “OK” degan qiymat namoyish
etiladi. Aks holda, qaysi tartib nomeridagi faylga xatolik bo`lsa, o`sha satrga
faylning k - jadvalda xatolik mavjud degan yozuv “Fayl to`g`riligining tasdig`i”
sohasida ko`rinadi. to`rtinchi faylga talabga mos tarzdagi faylni tanlasak, bizga
“OK” yozuvi va yettinchi faylga noto`g`ri faylni joylashtirsak, “7-jadvalda xatolik
bor” yozuvi ko`rinadi.
Agar dasturda nechta fayl tanlangan bo`lsa ularni ishlatish majburiydir.
Ya`ni test fayli tanlangandan keyin, shu faylning umumiy testlar sonidan nechta
test deb nomlanuvchi sohasining qiymati nolga teng bo`lishi mumkin emas .
Test faylining qo`shilishi va kamayishida biz Test fayli\Test fayli soniga
qiymatini o`zgartirishga amalga oshiriladi. Agar biz aksincha, test fayli sonini
qiynatini kamaytirsak natijasida fayllar sonham kamayadi. Fayllar soni natural
sondan tashkil etilishi kerak. Shuning uchun eng kichik qiymati 1, kata qiymati esa
10 ga tengdir.
77
8. “Tasdiqlash” oynasidagi “Sarlavha” sohasida tayyorlangan shablon
test yaratilayotgan vaqtda test variantlarining sarlavha qismida va “Tasdiqlayman”
dagi shablon tasdiqlash qismida chiqadi.(2.4.3-chizma)
2.4.3-chizma. Tasdiqlash oynasining ko`rinishi.
9. “Talaba uchun testni generatsiyalash” oynasi. Biz bilamizki, test
yaratuvchi bizning talablarga mos ravishda to`g`ri javoblar keltirilgan test
fayllarini topshiradi. Barcha to`g`ri javoblar A variantida ko`rsatilgan bo`lsa, bu
javoblarni talabaga berib bo`lmaydi. O`qituvchi bu javoblarni joyini qo`l bilan
almashtirmasligi uchun generatsiyalash (o`rin almashtirish) usuli yordamida yangi
test faylini hosil qilishimiz mumkin. Ko`rsatilgan faylning davomida
“TalabaUchun” degan so`z birikmasi bilan yangi fayl hosil bo`ladi. Buning uchun
“Talaba uchun testni generatsiyalash” oynasidan foydalanamiz (2.4.4-chizma).
a) Talaba uchun generatsiya qilish jarayoni
78
b) Talaba uchun shakllangan Word fayli natijasi
(2.4.4-chizma). Talaba uchun testni generatsiyalash oynasi va natijasi.
Bu oynada “ Test fayli manzili va uni tanlash” sohasini tugma orqali
tanlashimiz kerak va “umumiy soni” nomli sohasida avtomatik bor bo`lgan
umimiy test sonining qiymati tushadi. “Fayl to`g`riligini tasdig`i” sohasida
faylning barcha talablari bajarilsa “OK” yozuvi, fayl talabga javob bermasa
jadvaldagi xatolik haqida yozuv chiqadi. Agar foydalanuvchi faylni
tanlamasdan “Berilgan test faylini talaba uchun javoblarni almashtirib ber”
tugmasini bosganda, “Test faylini tanla!” degan xabar oynasi ekranga
namoyish etiladi. Foydalanuvchi talabga mos faylni tanlab “Berilgan test
faylini talaba uchun javoblarni almashtirib ber” tugmasini bosgandan so`ng,
dastur test variantlarini generatsiya qilib beradi.
10. „Yordam“ oynasi. Bunda foydalanuvchi uchun dasturni ishlatish va
test variantlari fayllarining tayyorlanishiga qo`yiladigan talablar haqidagi
ko`rsatmalar shu tugmani bosganda, batafsil yoritib beriladi (2.4.5 - chizma).
2.4.5-chizma. Dasturning yordam qismi
79
11. „Mualliflar“ oynasi. Bu soha tanlanganida dasturning mualliflari
haqidagi ma`lumot namoyish etiladi (2.4.6-chizma).
2.4.6-chizma. Mualliflar oynasi.
12. „ Testni shakllantirish“ oynasi orqali biz test variantlarini shakklantira
olamiz (2.4.7-chizma). Bu oynada „Variantlar soni“ sohasida variantlar sonini
kiritib, „Variantlar joylashadigan katalog“ sohasida yaratiladigan testlarni dastur
qaysi katalogda saqlashi ko`rsatiladi. „Tayyorlash“ tugmasi bosilsa, test
variantlarini shakllantirib beradi. Agar “Variantlar joylashadigan katalog” sohasi
tanlanmasdan “Tayyorlash” tugmasi bosilsa, foydalanuvchi ekranida, “Variantlar
joylashadigan katalogni ko`rsating” degan yozuv xabarnoma sifatida taqdim
etiladi.
2.4.7-chizma. Testni shakllantirish oynasi.
80
Bu oynada test variantlarini shakllantirish bilan bir qatorda testni generatsiya
qilib, testning javob kalitlarini ham shakllantirib beradi.
Test ishlashi uchun talablar.
- Office dasturi aktivatsiya qilingan bo`lishi va office paketining word ilovasi
ochilganda so`rov chiqmasligini ta`minlash
- Test fayllari Word 1997-2003 versiyasiga saqlangan bo`lishi kerak (*.doc).
Test fayllariga qo`yiladigan talablar.
- Word dasturida testlar jadvalda joylashtirilgan bo`lishi shart va zarurdir. Har bir
jadval alohida-alohida bo`lishi va birta ustun beshta satrdan iborat bo`lishi
kerak. Birinchi satrda savol, ikkinchi satrda to`g`ri javob, qolgan satrlarda esa
javoblar bo`ladi. Savollar yonida sonlar (1, 2, 3, …n) va javoblar yonida esa
harflar (A, B,C,D) lar bo`lmasligi shart. Savollar javoblar belgilanmagan
bo`lishi kerak.
- Testni savoli ham bo`lishi kerak va u birinchi satrda.
- Testning to`g`ri javobi A) kalitida joylashtirilgan bo`lishi kerak;
- Testning javob variantlari qaytarilishining oldi olinishi kerak;
- Test javoblar soni 4 tadan oshmasligi ham, kam bo`lmasligi ham kerakdir.
Agar testlarning javoblari soni 4 ta bo`lmasa, dasturni ishlatilish vaqtida test
fayllarini tanlagandan so`ng „Fayl to`g`riligining tasdig`i“ sohasida jadvalda
xatolik borligi haqida xabar beriladi. Aksincha, javoblar soni 4 ta bo`lsa, shu
sohada „OK“ yozuvli xabar chiqadi.
- Worddagi tayyorlangan test fayllarida test bo`lishi kerak, hech
bo`lmasa 100 ta.
II. bo`yicha xulosa. Bitiruv malakaviy ishimning ikkinchi bobi yuqorida aytilganidek, “Berilgan
testlardan test variantlarini shakllantiruvchi dastur yaratish” deb nomlanadi. Bu
bobning o’zi to`rt qismga bo’lingan bo’lib, birinchi qismi “Delphida Offisni
avtomatlashtirishning umumiy prinsiplari va word dasturiy vositasi bilan ishlash”
81
deb nomlanadi. Bu qismda Delphi muhitida Office ilovalar, Word bilan ishlash
haqida gapirib o`tganmiz. Ikkinchi qismi “Test variantlarini yaratuvchi dasturning
spetsifikatsiyasi” deb nomlanib, bunda dasturni yaratish uchun masalani texnik
qo`yilishi haqida gapirib o`tganmiz. Dasturimizning qay darajada ishlashining
analitikasi keltirilgan. Uchinchi qismi “Test variantini formalari va uning
modullari” deb nomlanib, bunda dasturimizda foydalangan har bir komponenta,
xususiyati, hodisalari va shu hodisaga yozilgan dastur matni haqida ko`rib chiqdik.
To`rtinchi qismi “Test variantini yaratuvchi dasturidan foydalanish uchun
ko`rsatma” deb nomlanib, bunda shu dasturimizdan foydalanish uchun
ko`rsatmasini keltirdik.
82
XotimaBitiruv malakaviy ishimning birinchi bobi, “Dasturni yaratish uchun
foydalaniladigan dasturiy vositalar” deb nomlanadi. Bu bobning o’zi ham uch qismga bo’lingan bo’lib, birinchi qismi “Delphi muhitida ishlash” deb nomlanib, delphi muhitida ilovalar yaratish, muhitning oynalari va dasturni kompilatsiya qilish va ishga tushirish haqida ko`rilgan. Delphida konsol va windows ilovalar yaratish haqida ko`rildi. Ikkinchi qismi “Delphidagi asosiy komponentalar va ularning xususiyatlari, hodisalari” deb nomlanib, Delphida foydalaniladigan komponentalar va ularning qaysi palitraga joylashganligi haqida gapirib o`tdik. Har bir komponentani xususiyatlari va ularning vazifalari keltirilib, ayrimlarini misollar bilar yoritdik. Bu komponentalarning hodisalarini qarab o`tdik. Bu hodisalar qachon va qay vaqtda ishlashi haqida ham tushuntirdik. Bu komponentalar haqida ma`lumot bizlarga zarur bo`lgani uchun buni ko`rib chiqdik. Sababi test variantlarni hosil qilishimiz uchun dephi dasturlash muhitida shu komponentalardan foydalanamiz. Uchinchi qismi “Delphi muhiti orqali MS Office bilan ishlash” deb nomlanib, COM texnologiyasi haqida ko`rdik. Bu texnologiya orqali MS Office ning modelli obyektlari va ularni dasturlash muhitlari bilan boshqarish haqida ko`rib o`tdik. Word va Excel dasturiy vositalarini elementlarini tuzilmasi bilan ishlash haqida ham ko`rib o`tilgan.
Bitiruv malakaviy ishimning ikkinchi bobi, “Berilgan testlardan test variantlarini shakllantiruvchi dastur yaratish” deb nomlanadi. Bu bobning o’zi to`rt qismga bo’lingan bo’lib, birinchi qismi “Delphida Offisni avtomatlashtirishning umumiy prinsiplari va word dasturiy vositasi bilan ishlash” deb nomlanib, Delphi muhitida Office ilovalar, Word bilan ishlash haqida qaralgan. Ikkinchi qismi “Test variantlarini yaratuvchi dasturning spetsifikatsiyasi” deb nomlanib, dasturni yaratish uchun masalani texnik qo`yilishi haqida gapirib o`tganmiz. Dasturimizning qay darajada ishlashining analitikasi keltirilgan. Uchinchi qismi “Test variantini formalari va uning modullari” deb nomlanib, dasturimizda foydalangan har bir komponenta, xususiyati, hodisalari va shu hodisaga yozilgan dastur matni haqida ko`rilgan. To`rtinchi qismi “Test variantini yaratuvchi dasturidan foydalanish uchun ko`rsatma” deb nomlanib, dasturimizdan foydalanish uchun ko`rsatmasini keltirdik.
83
Foydalanilgan adabiyotlar1. Karimov I.A. «Yuksak ma'naviyat yengilmas kuch».
2. Каримов И.А. Баркамол авлод орзуси,- Ташкент «Шарк», 1999.
3. Nazirov Sh.A., Musayev M.M. va b. Delphi tilida dasturlash asoslari. O’quv
qo’llanma. Toshkent-2008, - 277 bet.
4. Жалолов О.И., Хаятов Х.У., Жалолов Ф.И. Delphi 7 муҳитида ишлаш. 1-
қисм. Бухоро 2008., -160 бет
5. Дарахвелидае П. Г., Марков Е. П. Программирование в Delphi 7. -СПб.:
БХВ-Петербург, 2003.-784 с : ил.
6. Корняков В. Н., Программирование документов и приложений MS Office
в Delphi. СПб. : БХВ-Петербург , 2005. — 496 с : ил .
7. Н.Елманова, С.Трепалин, А.Тенцер. Delphi и технология COM (+CD).
Мастер-класс/ –СПб.: Питер, 2003. – 698с.: ил.
8. Кэнту М. Delphi 7: Для профессианалов. – СПб.: Питер, 2004. – 1101 с.:ил.
9. С. И. Бобровский. Delphi 7. Учебный курс. — СПб.: Питер, 2004. — 736
С.: ил.
10.Флёнов М.Е. - Библия Delphi. 3-е изд.,перераб.и доп. – СПб.: Питер, -
2011, БХВ-688 с.:ил.+CD-ROM
11. Кузан Д. Я., Шаноров В. Н. Программирование Win32 API в Delphi. -
СПб.: БХВ-Петербург, 2005. —368 с: ил.
12.Владимир Гофман, Анатолий Хомоненко. Delphi. Быстрый старт. —
СПб. : БХВ-Петербург, 2003. — 288 с: ил.
13.Культин Н. Б. Основы программирования в Delphi 7. — СПб.: БХВ-
Петербург, 2003. - 608 с.: ил.
14.Фленов М. Программирование в Delphi глазами хакера. — СПб.: БХВ-
Петербург, 2004. - 368 с.: ил.
15.Стивене Р. Delphi. Готовые алгоритмы / Род Стивене; Пер. с англ.
Мерещука П. А. - 2-е изд., стер. - М. : ДМК Пресс ; СПб.: Питер, 2004. - 384
с.: ил.
16.М.В. Сухарев. Основы Delphi. Профессиональный подход — СПб.: Наука
и Техника, 2004. — 600 с.: ил.
84