Borland Delphi 7 dasturlash muhitida 11-sinf Fizika faniga oid elektron ta'lim resurslari yaratish kirish



Download 195,05 Kb.
bet3/4
Sana04.06.2022
Hajmi195,05 Kb.
#634474
1   2   3   4
Bog'liq
Borland Delphi 7 dasturlash muhitida 11-sinf Fizika faniga oid elektron ta\'lim resurslari yaratish

1.1 Delphi grafik imkoniyatlari
Delphi dasturchiga grafik dasturlar sxema, chertej, illyustratsiyalar yaratishga imkon beradi. Dastur grafikani ob’ekt (forma yoki Image komponentasi) yuzasiga chiqaradi. Ob’ekt yuzasiga canvas xossasi mos keladi. Ob’ekt yuzasiga grafik element (to‘g‘ri chiziq, aylana, to’rtburchak va hokazo), chiqarish uchun bu ob’ektning canvas xossasiga mos usul qo‘llash lozim. Misol uchun Form1.canvas. Rectangle (10,10,100,100) instruksiyasi dastur oynasida to’rtburchak chizadi.
CHizish sohasi
Yukorida ko‘rilgan canvas xossasi -TCanvas tipidagi ob’ektdir. Grafik primitivlarni chiqarish usullari Canvas xossasini abstrakt chizish sohasi deb qaraydi. CHizish sohasi alohida nuqtalar - piksellardan iborat. Piksel holati uning gorizontal (X) va vertikal (Y) koordinatalari bilan aniqlanadi. Chap yuqori piksel koordinatalari (0,0). Koordinatalar yuqoridan pastga va chapdan o‘ngga qarab o‘sib boradi.
Soha o‘lchovlarini image komponentasining Height va width xossalari va formaning ClientHeight va Clientwidth xossalari orqali aniqlash mumkin.


File ListBox komponentlaridan foydalanib ilovalar yaratish.
Fayllarni ko'rish dasturining yangi ko'rib chiqilgan misolida, diskni tanlash qobiliyati etarli emas. Ushbu maqsadlar uchun alohida komponent taqdim etiladi, DriveComboBox - drayvlar ro'yxati, unda barcha shaxsiy kompyuter disk qurilmalari ochiladigan ro'yxat shaklida ko'rsatiladi. Ushbu komponent odatiy kombinatsiyalangan qutiga (ComboBox) asoslanganligini taxmin qilish oson va uning barcha farqlari ushbu komponentni qo'llashning o'ziga xos xususiyatlari bilan bog'liq bir nechta qo'shimcha xususiyatlarda. Bunday 3 ta xususiyat mavjud - DirList, Drive va TextCase.
DirList xossasi disklar ro'yxatini kataloglar ro'yxati bilan bog'lash uchun mo'ljallangan, Drive xususiyati esa tanlangan diskning harfini ko'rsatadi yoki o'rnatadi. Shunday qilib, agar biz ushbu komponentni ilovamiz (FileView) shakliga joylashtirsak va uning DirList xususiyatini DirLst ga o'rnatsak, u holda biz barcha kompyuter disklari tarkibini ko'rish uchun to'liq funktsional dasturga ega bo'lamiz.
TextCase xususiyatiga kelsak, u disk belgilari qaysi holatda ko'rsatilishi kerakligini aniqlaydi: agar standart qiymat tcLowerCase bo'lsa, u holda disk belgilari kichik harflarda, agar tcUpperCase bo'lsa, u holda katta harflarda ko'rsatiladi.
Endi meros qilib olingan fayllarni boshqarish guruhiga tegishli oxirgi komponentni ko'rib chiqish biz uchun qoladi. Bu filtrlar ro'yxati - FilterComboBox, fayllar ro'yxati uchun filtrni (niqobni) tezda o'rnatish imkoniyatini beradi. Drayvlar ro'yxati kabi, filtr ro'yxati ham birlashtirilgan qutiga asoslangan va shuningdek, o'ziga xos 3 xususiyatga ega, xususan, FileList, Filtr va Mask. Shubhasiz, FileList xususiyati ushbu komponentni fayllar ro'yxati bilan bog'lash uchun ishlatiladi va Filtr xususiyati filtrlarning o'zini belgilaydi. Shu bilan birga, FilterComboBox uchun filtrlarni aniqlash sintaksisi fayl dialog oynalariga to'liq mos keladi. Nihoyat, Mask xususiyati hozirda qaysi filtrdan foydalanilayotganligini bilish imkonini beradi.
Shunday qilib, faylni boshqarish komponentining "to'liq to'plami" qanday o'zaro ta'sir qilishini ko'rish uchun, keling, filtr ro'yxatini formaning eng pastki qismiga joylashtiramiz va FileList xususiyatini FileLst ga o'rnatamiz. Endi siz filtrlarni o'zingiz belgilashingiz mumkin: standart "Barcha fayllar" (barcha fayllar), "*.*" naqsh bilan berilgan. Siz "*.exe" naqshini ko'rsatib, unga "dasturlar" qo'shishingiz mumkin. Endi dasturni ishga tushirish va filtrni o'zgartirish ro'yxat tarkibiga bevosita ta'sir qilishiga ishonch hosil qilish uchun qoladi.

Yana shuni ta'kidlaymizki, ushbu ilova uchun birorta ham kod qatori hech qachon yozilmagan!
Grafiklarni ko'rsatish
Grafik tasvirlarni ko'rsatish uchun Image komponenti - Qo'shimcha (Qo'shimcha) komponentlar guruhiga kiruvchi tasvir ishlatiladi. U odatda forma yuzasiga joylashtiriladi va chizmalarni, shu jumladan fayl sifatida saqlanganlarini ko'rsatish uchun ishlatiladi. Image komponenti TGraphicControl sinfidan meros bo'lib, grafik bilan bog'liq bir nechta o'ziga xos xususiyatlarga ega. Avvalo, bu eng muhim xususiyat Tasvir - Rasm, tasvirlar bilan bevosita ishlash uchun ishlatiladi va TPicture turiga ega. Bu klassni keyinroq batafsil ko‘rib chiqamiz, ammo hozircha rasmning o‘zi ustidagi barcha operatsiyalar (jumladan, fayl yuklash) ushbu xususiyat orqali amalga oshirilishini unutmang.
Tasvirning boshqa xususiyatlari tasvirni ushbu komponent doirasida joylashtirish usullari bilan bog'liq. Shunday qilib, Markazning mulki tasvirni markazda (haqiqat) yoki yo'q (yolg'on) joylashtirilishi kerakligini aniqlaydi, ikkinchidan, u chap yuqori burchakda joylashgan bo'ladi. Boshqa 2 xususiyatlari-Stretch va Proportional tasvirni o'lchash uchun javobgardir. Shunday qilib, agar Stretch xususiyati haqiqatga o'rnatilsa, tasvir Image komponentiga ajratilgan barcha bo'shliqlarni egallaydi. Agar u bir vaqtning o'zida kamroq bo'lsa, u ko'paytiriladi, agar u ko'p bo'lsa, u siqiladi. Bunday holda, tasvirning o'zi (kenglik-balandlikka nisbati) nisbati hisobga olinmaydi, bu odatda buzilishlarga olib keladi. Shuning uchun, Delphi 6 dan boshlab, boshqa mulk - Proportional joriy etildi. Agar u haqiqatga o'rnatilsa, tasvir har qanday holatda asl nisbatlarini saqlab qoladi. Bundan tashqari, agar u rasm uchun ajratilgan maydondan kichik bo'lsa, u faqat Stretch xususiyati ham o'rnatilmagan bo'lsa, u asl o'lchamlarda qoladi.
Nihoyat, yana bir xususiyat, IncrementalDisplay, tasvirni ko'rsatish rejimini tanlash imkonini beradi: agar siz uni haqiqatga o'rnatsangiz, fayllar asta-sekin o'qiladi va ochiladi. Bu katta siqilgan fayllar uchun, masalan, 5-megapikselli JPEG tasvirlari uchun, ayniqsa yuqori sifatli saqlangan bo'lishi mumkin. Shu bilan birga, OnProgress tadbirini qayta ishlash orqali tasvirni yuklab olish jarayoni haqida ma'lumot olishingiz mumkin. Bu ushbu komponentning yagona hodisasidir. Quyidagi sintaksis aniqlangan TProgressEvent turiga ega:
procedure (Sender: TObject; Stage: TProgressStage; PercentDone: Byte; RedrawNow: Boolean; const R: TRect; const Msg: string) of object;
Sender argumenti, odatdagidek, voqea haqida xabar olgan ob'ektga ishora qiladi. Operatsiyani bajarishning taxminiy foizini PersentDone-ga murojaat qilish orqali olish mumkin, va umumiy holat - yuklab olishni boshlash (psStarting), yuklab olishni bajarish (psRunning) va yuklab olishni tugatish (psEnding) - bosqichga. Amalda, odatda faqat PercentDone ishlatiladi, va u faqat JPEG fayllar uchun tegishli ekanligini yodda tutish lozim:
ProgressBar1.Position:=PercentDone;
Chizmalarni aks ettiradigan eng oddiy dasturni yarataylik. Buning uchun, rasmdan tashqari, biz quyidagi komponentlarga muhtojmiz:

Sifatida chizilgan maydonni cheklash uchun ramka (Bevel);


Faylni ochish uchun dialog va uni chaqirish uchun tugma. Suhbat uchun filtr sifatida "tasvirlar |*" ni o'rnatishingiz mumkin.bmp;*.ico;*.wmf;*.emf;*.jpeg;*.jpg";
Jpeg fayllarini yuklab olish jarayonini ko'rsatish uchun ish vaqti ko'rsatkichi.
Jpeg kabi standart tasvir vositalari qo'llab-quvvatlanmaganligi sababli, dastur ular bilan ishlashi uchun jpeg ishlatilgan modullar ro'yxatiga qo'shilishi kerak.

Dastur kodi faqat 2 protseduralariga tushadi: onclock kopki ishlovchisi va onprogress tasvir ishlovchisi. Natijada, ro'yxatda ko'rsatilgan kodni olamiz.


Yuqorida aytib o'tilganidek, Image komponentining eng muhim qismi TPicture turiga ega bo'lgan rasm (rasm) xususiyatidir. Bu tasvirning o'zi bilan ishlash uchun ishlatiladi, shu jumladan fayldan o'qish va faylga yozish kabi operatsiyalar. Asl rasm hajmi rasmning balandligi va kengligi xususiyatlari orqali ham mavjud. O'z navbatida, TPicture klassi TGraphic sinfiga asoslangan bir nechta xususiyatlarni o'z ichiga oladi, bu aslida tasvirning o'zi bo'lishi mumkin. Umuman olganda, bir nechta bunday xususiyatlar mavjud:

Bitmap turi TBitmap-BMP turi fayllar uchun;


Icon TIcon turi-ICO turi fayllar uchun;
TMetaFile tipidagi MetaFile-WMF yoki EMF kabi fayllar uchun.
Bundan tashqari, ma'lum bir formatdan qat'i nazar, rasmga ishora qiluvchi va balandlik, kenglik va Transparent kabi barcha chizmalar uchun umumiy xususiyatlarga ega bo'lgan Graphic xususiyati ham mavjud. Shuning uchun, tasvir turi aniq ma'lum bo'lmagan hollarda, ushbu mulkdan foydalanish kerak. Bundan tashqari, agar nostandart ishlatilsa.
var Pic: TPicture;
...
Pic:=TPicture.Create;
Pic.LoadFromFile('c:\mypicture.bmp');
Form1.Canvas.Draw(1,1,Pic.Graphic);
Bundan tashqari," o'z-o'zidan " TPicture klassi ImageList kabi komponent bilan ishlashda foydali bo'lishi mumkin. Misol uchun, menyu yoki asboblar paneli tasvirlari uchun chizmalar alohida fayldan yuklab olinishi mumkin. Bunday holda, hatto ImageListni dasturni loyihalash vaqtida shaklga qo'yish ham shart emas-har bir narsa dastur davomida amalga oshirilishi mumkin. Bundan tashqari, fayl formati oldindan ma'lum bo'lganligi sababli-BMP bo'ladi, keyin TPicture sinfidan foydalanish kerak emas, darhol TBitmap sinfiga murojaat qilish osonroq bo'ladi-hali ham TPicture barcha murojaatlarni Bitmap mulkiga yo'naltiradi:
var
ImgLst: TImageList;
Bmp: TBitmap;
...
ImgLst:=TImageList.Create;
Bmp:=TPicture.Create;
Bmp.LoadFromFile('tools.bmp');
Bmp.Transparent:=true;
ImgList.AddMasked(Bmp,Bmp.TransparentColor);
Biroq, ba'zi hollarda TPicture sinfidan foydalanish boshqa formatlarni qo'llab-quvvatlashni ta'minlash uchun ko'proq afzal bo'lishi mumkin. Misol uchun, faqat grafik fayllarni ko'rsatish, balki yaratish mumkin emas dasturni ko'rib chiqaylik. Buning uchun biz asosiy shaklda biz bir xil tasvirni chizishingiz mumkin bo'lgan ob'ektni joylashtiradigan yangi ilovani yaratishimiz kerak. An'anaga ko'ra, biz MainFrm shaklini va tasvirni Img deb ataymiz. Keyin 2 tugmasini bosing va bir InsertBtn (Insert), ikkinchisi esa SaveBtn (saqlash) deb nomlang. Bundan tashqari, biz 2 ta suhbatga muhtojmiz - rasmlarni ochish va saqlash uchun. Biz maxsus OpenPictureDialog (OpenPicDlg) va SavePictureDialog (SavePicDlg) dialoglaridan foydalanamiz.
Ijodkorlik uchun ajratilgan maydon dastlab oq fon bilan to'ldirilgan, qog'oz parchasini taqlid qilish uchun, OnCreate yoki OnShow formasi uchun quyidagi kodni taqdim etishingiz mumkin:
Img.Canvas.Brush.Color:=clWhite;
Img.Canvas.FillRect(Rect(0,0,Img.Width,Img.Height));
Tayyorgarlik ishidan so'ng, tanlangan fayldan rasm chizish markaziga kiritiladigan qo'shish tugmasi uchun kod yozamiz:
procedure TMainFrm.InsertBtnClick(Sender: TObject);
var
Pic: TPicture;
begin
if not OpenPicDlg.Execute then exit;
Pic:=TPicture.Create;
Pic.LoadFromFile(OpenPicDlg.FileName);
Img.Canvas.Draw((Img.Width-Pic.Width) div 2,(Img.Height-Pic.Height) div 2,Pic.Graphic);
Pic.Free;
end;
Shunday qilib, Tuvalni chizish usuli yordamida har xil turdagi fayllardan har qanday sonni olishimiz mumkin. Bunday holda, ularning barchasi tasvirning o'rtasida markazlashtiriladi, lekin agar kerak bo'lsa, ularni oxirgi marta bosish amalga oshirilgan joyga olib chiqish mumkin bo'ladi.
Lekin bu hammasi emas: kollajlarni yaratish uchun Tuval tomonidan taqdim etilgan yagona imkoniyat emas. Siz kitobning avvalgi qismida ko'rib chiqilgan narsalarni chizishingiz mumkin. Ayni paytda, biz faqat oldindan belgilangan raqamlarni ko'rsatishimiz mumkin emas, balki foydalanuvchini biror narsa chizish imkoniyatini ham beradi. Bu foydalanuvchi sichqonchaning chap tugmachasini bosgandan so'ng paydo bo'ladigan kamida oddiy chiziqlar bo'lsin, markerni harakatga keltiring va kalitni qoldiring. Buning uchun Img obyekti uchun OnMouseDown va OnMouseUp voqea ishlovchilaridan foydalanamiz va uning kanvasining MoveTo va LineTo usullarini qo'llaymiz:
procedure TMainFrm.ImgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TSh
Endi Delphi-da grafiklarni ko'rib chiqdik, grafik tasvirlarni ko'rish uchun yanada qulayroq dastur yaratishga harakat qilamiz. Asosan, fayllarni ko'rish uchun dasturni olamiz - FileView, chunki u allaqachon foydalanuvchi uchun kompyuterning fayl tizimida navigatsiya qilish uchun kerak bo'lgan hamma narsani o'z ichiga oladi. Lekin, avvalo, biz ba'zi o'zgarishlarni amalga oshirishimiz kerak, ayniqsa, barcha mavjud komponentlarni to'g'ridan-to'g'ri qolib yuzasidan panelga ko'chirish foydali bo'ladi. Buning uchun avval shaklning barcha tarkibiy qismlarini tanlang va ularni clipboardga (Ctrl+X) kesib tashlang. Keyin panelni shaklga qo'ying va uning xususiyatlari uchun Align alLeft qiymatini o'rnating, natijada formaning chap tomonidagi barcha joyni egallaydi. Panel hozirgi vaqtda tanlangan komponent ekanligiga ishonch hosil qilib, biz clipboarddan (Ctrl+V) qo'shamiz. Formadagi sirtdan ilgari chiqarilgan barcha komponentlar panel yuzasida bir xil shaklda paydo bo'ladi.

FA navigatsiyasini ta'minlovchi tarkibiy qismlarni tushunish



Shu bilan birga, bunday dasturda barcha tasvirni bir vaqtning o'zida, hatto kichik miqyosda ham ko'rish mumkin emas. Ko'rish rejimlari orasidagi o'tishni amalga oshirish uchun siz sichqonchani ikki marta bosishingiz mumkin, lekin fayllar ro'yxatida emas, balki tasvirning o'zi. Shunday qilib, Img elementi uchun quyidagi OnDblClick voqea ishlovchisini yaratamiz:

procedure TMainFrm.ImgDblClick(Sender: TObject);


begin
Img.Proportional:=not Img.Proportional;
if Img.Proportional then Img.Align:=alClient else Img.Align:=alNone;
end;
Yuqoridagi kodda, birinchi navbatda, Proportional xususiyatining qiymati teskari tomonga o'zgaradi, shundan keyin Zoom yoqilganligiga qarab, tasvirning Align xususiyati o'zgaradi. Bu erda pastki chiziq, agar aylantirish maydoniga joylashtirilgan komponentning Align xususiyati alClient-ga o'rnatilgan bo'lsa, unda bu komponentning o'lchamlari aylantirish maydonining ko'rinadigan qismidan kattaroq bo'lishi mumkin emas. Joylashtirish (alNone) berilgan bo'lsa, keyin, biz dastlab ist qiymatini berilgan.
Grafik tasvirlarni ko'rish uchun VCL - da amalga oshirilgan odatiy Delphi komponenti ishlatilsa, multimedia ma'lumotlarini ko'rish yoki tinglash uchun tizim komponenti ishlatiladi-tizim oynasida joylashgan MediaPlayer komponent palitrasi. Tizim komponentining mohiyati shundaki, ularning ishlashi uchun deyarli barcha vazifalar operatsion tizimga o'rnatiladi va VCL faqat OS tomonidan taqdim etilgan funktsiyalarga kirish uchun oddiy interfeysni amalga oshiradi. Shu bilan birga, MediaPlayer komponentining o'zi Twincontrolga asoslangan keng tarqalgan vizual komponent bo'lib, uning "tizimli" faqat uning vositasi orqali amalga oshiriladigan funktsiyalar shaklida namoyon bo'ladi.
Umuman olganda, ushbu komponent o'z xususiyatlariga ega, chunki u bir tomondan foydalanuvchi tajribasini taqdim etadi va boshqa tomondan turli xil multimedia qurilmalarini boshqarishni ta'minlashi kerak. Komponent bilan interfeysni ta'minlash va, shu bilan birga, - muayyan tizim pleyeri bilan. MediaPlayer komponentining bir qator xususiyatlari ro'yxati jadvalda keltirilgan.
Komponentning ko'rinishi bilan bog'liq xususiyatlardan boshlaylik. Avvalo, bu ColoredButtons, EnabledButtons va VisibleButtons. Ushbu xususiyatlar bilan komponentning alohida tugmalarining mavjudligi va ko'rinishini nazorat qilish mumkin. CD - pleer turi ijro etish qurilmasi uchun zarur bo'lgan asosiy operatsiyalar soni bo'yicha jami 9 tugmalari. Agar CD-disklarni ijro etish rejalashtirilmasa, unda chiqish tugmachisiz (btEject), shuningdek, treklar orasidagi o'tish tugmalari (btNext va btPrev) bo'lishi mumkin. Ro'yxatga olish tugmasi (btRecord), agar u futbolchi haqida bo'lsa, keraksiz.
Ba'zi xususiyatlar faqat muayyan ijro etish qurilmalari uchun kerak, masalan, display xususiyati faqat video ketma-ketligi bo'lgan ma'lumotlar uchun muhimdir. Qurilmaning turi DeviceType xususiyatiga ega bo'lib, u quyidagi qiymatlardan birini qabul qilishi mumkin:

  • dtAutoSelect - тип устройства распознается автоматически;

  • dtAVIVideo - клип видео в формате AVI;

  • dtCDAudio - аудио CD;

  • dtSequencer - файл MIDI;

  • dtVideodisc - видео CD;

  • dtWaveAudio - файл WAV.

Shu bilan birga, odatda, dtauto qabul qilingan standartni qoldiradi, chunki CD va MIDI tashqari, hozirgi vaqtda mavjud bo'lgan fayllarning qolgan turlari ishlatilmaydi (dtAVIvideo turi MPEG emas, balki ovi formatini nazarda tutadi). Ijro etiladigan fayllarning muayyan turlarini qo'llab-quvvatlash OS va o'rnatilgan kodek dasturlariga to'liq mos keladi, Shuning uchun MediaPlayer komponenti Windows Media Player bilan bir xil ma'lumotlarni ijro etishi mumkin.

Eng oddiy holatda, faqat Audio-CD - ni o'ynash imkoniyati talab etilsa, komponentni shaklga qo'yish va DeviceType xususiyatini dtcdaudio-ga o'rnatish va autoopen-bu haqiqat. Shundan so'ng, faqat dasturni ishga tushirish va Play tugmasini bosing va agar diskda CD-DA formatidagi disk bo'lsa, uni ijro etish boshlanadi.


Agar siz universal pleyerni yaratishingiz kerak bo'lsa, unda siz ushbu xususiyatlarni odatiy holatda qoldirishingiz kerak - DeviceType dtautoselect-da va autoopen-yolg'onda. Shu bilan birga, agar siz bir xil faylni qayta tiklash vazifasi bo'lmasa, filename xususiyatining qiymatini belgilaydigan kodni taqdim etishingiz kerak bo'ladi. Bundan tashqari, oddiy o'yinchi uchun ko'p tugmalar ortiqcha bo'ladi. bundan tashqari, MediaPlayer komponentida tugmachalarni bosishni takrorlaydigan bir qator usullar mavjud. Masalan, Play, Stop, Back, Next va boshqalar. Birinchisi, o'yinchi MDI interfeysini ochib beradi, ikkinchisi esa, aksincha, yopiladi. Shuni esda tutish kerakki, interfeys faqat fayl aniqlanganidan keyin ochilishi mumkin. Shunga ko'ra, agar biz formada o'yinchi (MediaMP), faylni ochish dialogi (OpenDlg) va "faylni ochish" tugmasi mavjud deb hisoblasak, unda kod quyidagicha bo'ladi:

if not OpenDlg.Execute then exit;


MediaMP.Close;
MediaMP.FileName:=OpenDlg.FileName;
MediaMP.Open;
Agar Play usuliga murojaat qilish bilan boshqa qator qo'shsangiz, ijro etish avtomatik ravishda boshlanadi. Shu bilan birga, agar siz o'yinchi yaratmoqchi bo'lsangiz, uni to'xtatish va ko'rishni davom ettirishingiz kerak bo'ladi. Jami 3 tugmachalarni olamiz. MediaPlayer komponentiga kelsak, biz faqat tizim bilan o'zaro aloqaga muhtojmiz, shuning uchun uni ko'rinmas holga keltira olamiz, yolg'onga ko'rinadigan mulkni o'rnatamiz. Biroq, Video chiqishi uchun biz Twincontroldan kelib chiqadigan har qanday komponentga muhtojmiz va bu maqsadlar uchun odatiy panel juda mos keladi. Bitta savol shundaki, video o'lchamlari paneldagi ajratilgan maydondan kattaroq bo'lishi mumkin. Bunday holda, DisplayRect xususiyati bizga yordam beradi, bu bilan siz nafaqat ramkaning o'lchamlarini bilishingiz, balki kerakli narsani o'rnatishingiz mumkin. Bu nisbatni buzmaslik muhim bo'lgani uchun, siz balandlik va kenglikni alohida tekshirishingiz va kerakli o'lchov koeffitsientini hisoblashingiz kerak bo'ladi. Shunday qilib, biz birinchi ayirish kerak bo'ladi.
var kw, kh, k: real;
...
kw:=MediaMP.DisplayRect.Right/VideoPan.Width;
kh:=MediaMP.DisplayRect.Bottom/VideoPan.Height;
if (kw>1) or (kh>1) then begin
if kh>kw then k:=kh else k:=kw;
end else k:=1;
Shundan so'ng, faqat tasvir yakuniy hajmini hisoblash va har qanday klip ko'rish sohasida "mos" va yangi qadriyatlar header oynada ko'rsatilishi mumkin, shunday qilib, natijada qiymati DisplayRect xususiyatlarini o'rnatish uchun qoladi.

Tizim oynasida MediaPlayer-ning yonida bir nechta komponentlar mavjud, ular orasida Timer va PaintBox. PaintBox komponenti yoki chizilgan maydoni Image komponentining soddalashtirilgan versiyasidir: u chizilgan bo'lishi mumkin, ammo u tasvirni u bilan bog'lash mumkin bo'lgan xususiyatlarni o'z ichiga olmaydi. Aslida, ushbu komponentning asosiy maqsadi uning tuvali (Canvas mulk) orqali grafiklarni chiqarishdir. Aslida, TGraphicControl sinfidan meros qolgan boshqa xususiyatlar yo'q, bu komponent mavjud emas, shuning uchun uni ushbu sinfning amaliy tadbiri deb hisoblash mumkin.
Boshqa komponent - Timer, yoki taymer-tizim taymerlari bilan o'zaro aloqada Windows API funktsiyalarini qamrab oladigan vizual bo'lmagan komponent. Bu faqat bor 2 xususiyatlari - Enabled va Interval. Enabled xususiyati taymerni faol yoki harakatsiz qiladi va Interval xususiyati OnTimer hodisasi sodir bo'ladigan vaqt oralig'ini (millisekundlarda) belgilaydi. OnTimer hodisasi ushbu komponentning yagona hodisasidir, Agar u yoqilgan mulk haqiqatga o'rnatilgan bo'lsa, Interval xususiyatidan belgilangan vaqtdan keyin sodir bo'ladi.
Taymerni qo'llash juda xilma - xil bo'lishi mumkin, ammo aqlga kelgan birinchi narsa soatni amalga oshirishdir. Ba'zi eski taymerlar kompyuterlarda Windows 3.1 tizimi o'rnatilgan paytlarni eslab qolishlari mumkin. Biz bu holatda, u analogga o'xshash soatni ifodalovchi dastur mavjudligi nuqtai nazaridan bizni qiziqtiradi. Keling, Timer va PaintBox komponentlarini ishlatib, Windowsning zamonaviy versiyalari uchun bunday dasturni amalga oshirishga harakat qilaylik.
Birinchidan, biz yangi dastur yaratamiz, uni soat deb ataymiz va asosiy shakl, an'anaga ko'ra - MainFrm. Keyin vaqtni raqamli formatda (DigitalLbl deb ataymiz) va vaqtni analog formatda (AnalogPB) ko'rsatish uchun chizilgan maydonni ko'rish uchun ariza yorlig'iga qo'ying. Yorliq uchun katta shriftni o'rnatamiz va chizilgan maydon uchun 110 o'lchamini 110 nuqtada o'rnatamiz. Va, albatta, taymerning o'zi ham kerak-biz uni ClockTmr deb ataymiz.
Eng oddiy - raqamli formatda chiqish vaqti bilan boshlaylik. Buni amalga oshirish uchun, OnTimer tadbirining ishlovchisida faqat bitta qatorni yozish kifoya:
DigitalLbl.Caption:=TimeToStr(now);
Agar sukut bo'yicha 1 soniyadagi intervalni qabul qilsangiz va taymerning o'zi faol bo'lsa, biz ishlaydigan soatni olamiz. Bundan tashqari, vaqtni to'g'ridan-to'g'ri ilovaning sarlavhasiga qo'shishingiz mumkin, shuning uchun hatto katlanmış shaklda ham vazifa paneliga qarab vaqtni bilib olishingiz mumkin. Buning uchun Global dastur ob'ektining nomini o'zgartirish kifoya:
Application.Title:=DigitalLbl.Caption;
Lekin, albatta, analog formatda vaqtni ko'rsatish uchun ko'proq kod yozishingiz kerak bo'ladi. Biz ushbu maqsadlar uchun alohida funktsiyani yaratamiz-vaqtning qiymatini qabul qiladigan va uni terishda ko'rsatadigan shakl usuli. Shunga ko'ra, u TMainFrm jamoat sinfining bir qismida bo'ladi va quyidagicha aniqlanadi:
procedure DrawClock(t: TTime);
Keling, bu jarayonni yaqindan ko'rib chiqaylik. Avvalo, soat qo'ng'irog'ini ko'rsatishimiz kerak. Aslida, uni grafik muharriridan chizishingiz va uni Draw usuli yordamida ko'rsatishingiz mumkin. Shunga qaramay, biz boshqa yo'l bilan boramiz va uni dasturiy usullar bilan chizamiz. Biz aylana bilan shug'ullanayotganimiz sababli, avvalo, fon rangini tanlab, ellipsni chiqaramiz:
AnalogPB.Canvas.Brush.Color:=clWhite;
AnalogPB.Canvas.Ellipse(3,3,108,108);
Keyin teglar chizamiz, lekin birinchi navbatda aylana bo'ylab qadam oralig'ini aniqlaymiz. Bir soat qilsak, bu qadam 60ga teng bo'lsin. Shunga ko'ra, ma'lum bir formulaga ko'ra, biz qadam hajmini olamiz (biz uni step deb ataymiz, bu ikki turdagi o'zgaruvchi bo'lishi kerak), 2ga tengmi?/60:
step:=2*pi/60;
Endi siz o'zingizning belgilaringizni olishingiz mumkin, ularni 5 daqiqa oralig'ida chiziqlar shaklida chizamiz yoki an'anaviy, soat terminologiyasiga rioya qilsangiz-har bir soat uchun bir. Buni amalga oshirish uchun 12 marta chiziqdan chizilgan tsiklni yaratamiz.



Download 195,05 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish