S avezbayev



Download 1,62 Mb.
Pdf ko'rish
bet68/85
Sana14.06.2022
Hajmi1,62 Mb.
#669591
1   ...   64   65   66   67   68   69   70   71   ...   85
Bog'liq
YeTLAT darslik

Gis Toolkit
komponentidan foydalanib, ilova tayyorlash TMAPView 
komponenti shakliga ko’chirish va unga zarur o’lchamlarni va joylashadigan 
o’rnini berishdan boshlanishi kerak. Obyektlar inspektorida unga MapView ismini 
beramiz. Ushbu komponent karta fayliga yo’l ochib beradi va uni shaklda 
tasvirlashni amalga oshiradi. Bu shaklda albatta bo’lishi kerak bo’lgan GAТ ning 
yagona komponentidir. 
Ushbu dasturdan foydalanuvchi kartaning zarur fayllarini ochishi uchun, 
shaklda faylni tanlash muloqati OpenDialog: TOpenDialog (komponentlar 
palitrasidan) va muloqatni faollashtirish uchun bosh menyu elementi – 
miOpenFileMap: TMenultem joylashtiriladi. 
Ish tartibi quyida keltiriladi: 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Karta faylini tanlash va ochish 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
procedure TMyForm. miOpenFileMapClick (Sender: TObjekt);
begin 
if OpenDialog.Execute= false 
then exit;
MapView.MapFileName:= OpenDialog.FaleName; 
MapView.MapView:= true; 
end; 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Shunday qilib, ilovaga endi zarur karta faylini tanlash, ular mazmunini karta 
bo’yicha navigatsiya imkoniyati bilan standart shartli belgilarda ko’rsatish 
mumkin. Тez-tez yuzaga chiqadigan vaziyatlardan biri - bu kartadagi mavjud 


145 
obyektlarning barchasini emas, balki ularni ayrim ko’rsatkichlari bo’yicha tanlab 
ko’rsatish kerak bo’ladi, masalan, qatlamlar yoki turlar bo’yicha. Bunday 
imkoniyatni TMapView.ViewSelect xususiyati yaratadi, u TMapSelect turiga ham 
ega. Ushbu xususiyat o’lchamlarini qo’lda ham berish mumkin, biroq bu ancha 
zerikarli va mayda ish. Bunday masalani yechish uchun TMapSelectDialog xizmat 
qiladi. U foydalanuvchiga karta obyektlarini ko’rsatishni tanlash uchun barcha 
o’lchamlarni interaktiv sozlash imkoniyatini beradi. Buning uchun quyidagi 
harakatlarni bajarish kerak: 
-
TMapSelectDialog komponentini shaklga (MapSelectDialog deb ataymiz) 
ko’chirish kerak; 
-
uning xususiyati MapSelectDialog.MapViewni MapView komponentiga (oldin 
shaklga o’tkazilgan) o’rnatish; 
-
shaklga muloqatni chaqirish uchun menyu elementini kiritish (ushbu loyihada - 
miSelectView: TMenultem) va uning uchun muloqatni chaqirish jarayonini 
dasturlashtirish (pastkilarga qarang).
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// ko’rsatiladigan obyektlar tarkibini tanlash va sozlash 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Procedure TMyForm.miSelectViewClick (Sender: TObject);
begin 
// Тanlash o’lchamlarini kuchga kiritish uchun
MapView. Selecting:= true // ushbu buyruqni bir marta bajarish 
// yoki obyektlar inspektori Delphi 
// yordamida komponentda sozlash mumkin 
// Muloqotni chaqiramiz 
if MapSelectDialog.Execute (MapView. ViewSelect, false)= true
then MapView.Repaint; 
end; 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 


146 
Har qanday GAТning boshqa ahamiyatli xususiyati karta tasvirini masshtablash 
imkoniyati hisoblanadi. Bizning misolimizda, bu sichqonchani bosib ushlash va 
kartani 
tasvirlashning 
joriy 
masshtabi 
uchun 
javob 
beradigan 
MapView.ViewSelect xususiyatidan foydalanish hisobiga amalga oshiriladi.
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Karta nuqtasida sichqoncha bosiladi 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
Procedure TMyForm.MapViewMouseUp (Sender: TObject: Button:
ТMouseButton: Shift: TShiftState: 
X, Y: Integer); 
Var 
NewScale: integer; 
Spoint: TPoint; 
begin 
if MapView.MapView=false 
then exit; 
// joriy tartibga bog’liq harakat qilinadi 
if miScale.Checked = true 
// nuqtadagi masshtablash tartibi faol 
then begin 
// yangi masshtab hisoblanadi 
NewScale : = MapView.ViewScale; 
If Button = mbLeft // chap tugmacha bilan kartani yaqinlatamiz 
then NewScale : = MapView. ViewScale div 2 ; 
If Button = mbRight // o’ng tugmacha bilan kartani uzoqlashtiramiz 
then NewScale := MapView.View Scale * 2;
// nuqtada masshtabni o’rnatamiz 
// MapPoint.Plecelnp := PP_ PICTURE; 
MapPoint. Y 
: = MapView.MapTop + Y; 
MapPoint. X 
: = MapView.MapLeft + X; 


147 
MapView.ScalelnPoint(NewScale,MapPoint.point); 
// kursorning oldingi holatini tiklaymiz 
// MapPoint.PlaceOut : = PP PICTURE
Spoint.X : = trunc(Map Point.X) – MapView.MapLeft; 
Spoint.Y : = trunc (MapPoint.Y) – MapView.MapTop; 
Spoint : = MapView.ClientTOScreen(Spoint); 
SetCursorPos(Spoint.X, Spoint.Y); 
exit; 
end; 
end; 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Zarur kartani ochib, uni istalgan tarkibda va masshtabda tasvirlab, shu 
variantning qattiq asosdagi nusxasini olish kerak. Buning uchun shaklda 
TMapPrintDialog komponentini joylashtiramiz, uning MapView xususiyatini 
yuqorida keltirilgan usulda o’rnatamiz va Execute usulida uni chaqirish uchun 
menyu elementini yaratamiz. Ko’rinib turibdiki, kartani chop etish uchun TPrinter 
klassidagi dasturlashning hamma tomonlarini va uning har xil qurilmalar bilan 
ishlashdagi xususiyatlarini o’rganish zarurati yo’q. 
Karta bilan vizual ishlashda foydalanuvchida albatta kartaning u yoki bu nuqtasida 
qanday obyektlar joylashganligini bilish istagi paydo bo’ladi (karta - bu ko’p 
qatlamli «karam» ligini hisobga olib). Bu masalani yechish quyidagi bosqichlardan 
iborat: sichqoncha bosilishi izlanayotgan nuqta koordinatalarini aniqlash va 
koordinatalari ma’lum nuqtagacha karta obyektlarini ketma-ket aniqlash. Buni 
amalga oshirishning eng oddiy usuli - ТMapObj (aniq karta obyekti to’g’risidagi 
ma’lumotlarga javob beradi) komponentining SelectObjectlnPoint usulidan 
foydalanish. 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Karta nuqtasida sichqoncha bosiladi 


148 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
const 
iFindRadius = 5; // piksellarda izlash radiusi
procedure TMyForm.MapViewMouseUp(Sender: TObject: Button:
TMouseButton; Shift: TShiftState: 
X, Y: Integer); 
begin 
ifMapView.MapView=false 
then exit; 
// joriy tartibga bog’liq harakat qilinadi 
// nuqtada TMapObj yordamida izlash 
if milnPointDlg.Checked = true 
then begin 
MapObj Style : = OS_ NOVIEW; // agar ajratish bo’lgan bo’lsa uni olib 
tashlaymiz. 
MapObjFind.Style : = OS_ NOVIEW; 
If MapObj.SelectObjectlnPoint (X, Y iFindRadius, dlMinCommon) <>0) 
then begin 
// Obyekt nomini chiqaramiz 
st Map.Panels[3].Text : = MapObj.ObjName; 
// Obyektni o’chib yonish bilan ajratamiz 
MapObj.Style : = OS_SELECT; 
end; 
exit; 
end; 
end; 
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Ushbu usul nafaqat nuqtadagi barcha obyektlarni birma-bir ko’rib chiqish, 
balki, kartaning har xil obyekti to’g’risidagi to’la ma’lumotlarni ko’rish va 


149 
tahrirlash imkonini beradi. Bu masalani yechishning ikkinchi varianti ham mavjud 
bo’lib, u ancha murakkab, ammo, u karta obyektlarini saralash jarayoni va ularni 
vizual ajratish usullari ustidan to’la nazoratga ega bo’lish imkonini beradi. Bunday 
usul ham misolda bayonlangan va GAТning ikki komponenti bog’lamidan 
foydalanadi: TMapFind (kartada izlashni tashkil qilishga javob beradi) va 
TMapObj (karta obyekti).
Bizning oldimizda ilova uchun oxirgi yechilmagan masala – karta obyektlari
va ma’lumotlar bazasi yozuvlari orasidagi o’zaro aloqalarni tashkil etish qoldi. 
Misolda ma’lumotlar bazasi sifatida MyTable.Dbf nomli Dbase formatining lokal 
jadvali tanlangan. Jadval yozuvlari va karta obyektlari orasidagi o’zaro aloqalarni 
o’rnatish ikkita parametrga asoslanadi: ular joylashgan karta beti nomi
(TMapobj.ListName xususiyati) va ushbu bet ichidagi o’zining tartib raqami 
(TMapObj.Key). Ma’lumotlar bazasi jadvalida ushbu ikki parametrni eslab qolish 
va har bir yozuvning o’ziga xosligini ta’minlash yetarlik bo’ladi va karta bilan 
jadval orasidagi aloqa o’rnatilgan hisoblanadi. MyTable jadvalida karta bilan 
aloqaga ikkita qator javob beradi: LINKSHEET (karta betining nomini saqlash 
uchun S 32 turi) va LINKOBJECT (karta beti ichida obyekt tartib raqamini saqlash
uchun N 10 turi). 
Aloqalarni tashkil etishning umumiy uslubi quyidagidek: 
-
kartaning joriy obyekti tanlanadi (nuqtada izlash, butun karta bo’yicha izlash va 
sh.o’ )
-
jadvalda zarur yozuvni o’rnatish ; 
-
aloqalar parametrlarini jadval qatorlariga yozish. 
Aloqalarni tashkil etish bo’yicha barcha harakatlar dastur listingida to’la 

Download 1,62 Mb.

Do'stlaringiz bilan baham:
1   ...   64   65   66   67   68   69   70   71   ...   85




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