[align=center]~*¤ô§ô¤*~*¤ô§ô¤*~الدرس الثاني~*¤ô§ô¤*~*¤ô§ô¤*~[/align]
في هذا الدرس سوف نتعامل مع الأدوات المتاحة والمتيسرة للمبرمج في نظم المعلومات الجغرافية وسوف يتميز هذا الدرس بإضافة أوامر جديدة، كم من الأعضاء سأل عنها وحاول أن يجد لها عن جواب ولكن دون جدوى .
ولان نقول لهم شدوا الأحزمة وستعدو للانطلاق في تصميم واجهة برمجية تعمل بكفاءة مع خرائط نظم المعلومات الجغرافية
[align=center]ونقول بالبداية][][§¤°^°¤§][][ ( بسم الله مجريها ومرساها)][][§¤°^°¤§][][[/align]
الخطوة الأولى
الأدوات المطلوبة في تصميم الواجهة
1- Mapcontrol
2- Microsoft Common Dialog Control
3 Toolbar
4- ImageList
5- Label
والحمد الله كل هذه المكونات متوفرة لديكم وتستطيعون إضافتها من خلال النافذة التالية
وأعتقد أنكم تعرفون كيف الوصول إلى هذه النافذة ( راجع الدرس الأول
)
الخطوة الثانية
نرسم هذه الأدوات على الواجهة البرمجية
الخطوة الثالثة
نأخذ Right Click على اداة ImageList ثم ناختار Propreties كما هو موضح في الصورة السابقة تظهر لنا النافذه التالية
من خلال ايقونة Insert Picture نستطيع إضافة صور الأيقونات ( وأكيد تعرفون مسار مكان صور الايقونات ) راجع الدرس السابق
وهنا يجب علينا الدقة بمانكتبه هل لاحرف كبتل او اصمول وحفظ ترتيب مكان الايقونات ويستحسن احضار ورقة وقلم
Key . Index . Image
صورة فتح ملف . 1 . Open
صورة اضافة طبفة . 2 . LoadData
صورة مؤشر السهم . 3 . Pointer
صورة الزووم . 4 . Zoom
صورة الوضع الطبيعي . 5 . FullExtent
صورة الاستعلام . 6 . Identify
صورة تحديد الظاهرات . 7 . Trackevents
بعد لانتهاء نضغط على OK
الخطوة الرابعة
نأخذ Right Click على اداة Toolbar ثم ناختار Propreties كما هو موضح في الصورة تظهر لك النافذة التالية وقوم بتغير ماهو موضح في رقم ( 2 )
بعد ذلك انتقل الى التبويب Button تظهر لك النافذة التالية
من هذه النافذة نقوم بإضافة الايقونات التي صممناها في الخطوة الثالثة وهنا تعرفون لماذا طلبنا منكم إخضار ورقة وقلم
في رقم ( 1 ) يمثل رقم ال Index وتفقنا ان رقم واحد هو فتح ملف والان ماعليك الا كتابة Open في خانة رقم ( 4 , 5 , 6 ) وبعد ذلك تضيف الايقونه الثانية من خلال الضغط على رقم ( 7 ) Insert Button وتفقنا انها تكون إضافة بيانات وتكتب LoadData في خانة رقم ( 4 , 5 , 6 ) وهكذا كرر العملية مع كل الايقونات
حتى يخرج شكلها النهائي بهذا الشكل
الخطوة الخامسة
نقوم بإضافة الأكواد الى الواجهة البرمجية
اعمل دبل كلك على Toolbar وكتب الكود التالي
كود:
Private Sub Toolbar1_ButtonClick(ByVal button As MSComctlLib.button)
'ÝåÏ ÇáãØáÞ
With MapControl1
Select Case button.Key
Case "Open"
CommonDialog1.DialogTitle = "Browse Map Document"
CommonDialog1.Filter = "Map Documents (*.mxd)|*.mxd"
CommonDialog1.ShowOpen
MapControl1.LoadMxFile CommonDialog1.FileName
Case "LoadData"
'Get IGxDialog interface
Dim pGxDialog As IGxDialog
Set pGxDialog = New GxDialog
'Get IGxObjectFilter interface
Dim pGxObjectFilter As IGxObjectFilter
Set pGxObjectFilter = New GxFilterFeatureClasses
'Set GxDialog properties
Set pGxDialog.ObjectFilter = pGxObjectFilter
pGxDialog.AllowMultiSelect = True
pGxDialog.Title = "Add Feature Data"
'Get IEnumGxObject
Dim pEnumGxObject As IEnumGxObject
'Display the GxDialog and set the EnumGxObject. Exit if user cancel the dialog
If pGxDialog.DoModalOpen(MapControl1.hWnd, pEnumGxObject) = False Then Exit Sub
Dim pFeatureLayer As IFeatureLayer
Dim pFeatureClass As IFeatureClass
Dim pGxDataset As IGxDataset
'Get IGxObject interface
Dim pGxObject As IGxObject
pEnumGxObject.Reset
Set pGxObject = pEnumGxObject.Next
'Loop through the GxObjects
Do While Not pGxObject Is Nothing
'Query interface for IGxDataset interface
Set pGxDataset = pGxObject
'Get IFeatureClass interface
Set pFeatureClass = pGxDataset.Dataset
'Get IFeatureLayer interface
Set pFeatureLayer = New FeatureLayer
'Set layer properties
Set pFeatureLayer.FeatureClass = pFeatureClass
pFeatureLayer.Name = pFeatureClass.AliasName
'Add the layer to the MapControl
MapControl1.AddLayer pFeatureLayer, 0
'Add the layer name to the control
Set pGxObject = pEnumGxObject.Next
Loop
Case "Zoom"
.MousePointer = esriPointerZoomIn
Case "Pointer"
MapControl1.MousePointer = esriPointerDefault
Case "Pan"
MapControl1.MousePointer = esriPointerPan
MapControl1.Pan
Case "Fullextent"
MapControl1.Extent = MapControl1.FullExtent
Case "Trackevents"
MapControl1.MousePointer = esriPointerHotLink
Case "query"
.MousePointer = esriPointerCrosshair
Case "Identify"
MapControl1.MousePointer = esriPointerDefault
Dim pIdentifyDialog As IIdentifyDialog
Dim pIdentifyDialogProps As IIdentifyDialogProps
Dim pEnumLayer As IEnumLayer
Dim pLayer As ILayer
Dim pActiveView As IActiveView
' Set pMxDoc = Application.Document
Set pActiveView = Me.MapControl1.ActiveView.FocusMap
'Create a new IdentifyDialog and associate it
'with the focus map and the map's display
Set pIdentifyDialog = New IdentifyDialog
Set pIdentifyDialogProps = pIdentifyDialog 'QI
Set pIdentifyDialog.Map = Me.MapControl1.ActiveView.FocusMap
Set pIdentifyDialog.display = pActiveView.ScreenDisplay
'Clear the dialog on each mouse click
pIdentifyDialog.ClearLayers
'Perform an identify on all of the layers the dialog
'says are searchable
Set pEnumLayer = pIdentifyDialogProps.Layers
pEnumLayer.Reset
Set pLayer = pEnumLayer.Next
Do While Not pLayer Is Nothing
pIdentifyDialog.AddLayerIdentifyPoint pLayer, x, y
Set pLayer = pEnumLayer.Next
Loop
pIdentifyDialog.Show
End Select
End With
End Sub
نضيف الكود التالي الى Mapcontrol عن الحدثOnMouseDown
كود:
If button = vbLeftButton Then
MapControl1.Extent = MapControl1.TrackRectangle
End If
With Toolbar1.Buttons
If .Item("Zoom").Value = tbrPressed Then
MapControl1.Extent = MapControl1.TrackRectangle
ElseIf .Item("Pan").Value = tbrPressed Then
MapControl1.Pan
ElseIf .Item("Trackevents").Value = tbrPressed Then
AddGeoEvent mapX, mapY
ElseIf .Item("query").Value = tbrPressed Then
SearchShape
End If
End With
نضيف الكود التالي الى Mapcontrol عن الحدثOnMouseMove
كود:
Label1.Caption = "1:" & MapControl1.MapScale 'ÝåÏ ÇáãØáÞ
الخطوة السادسة
والآن نضيف ملفات النظام المطلوبة من References حتى لا تظهر لكم الرسائل المزعجة وتخبركم بوجود خطأ
والملفات المطوبة هي ( أنظر الصورة)
[align=center]
والآن تمتع ببرنامجك الجديد[/align]
[align=center]«®°·.¸.•°°·.¸¸.•°°·.¸.•°®»وأخيراً نسألكم الدعاء لي و لي والدي«®°·.¸.•°°·.¸¸.•°°·.¸.•°®»[/align]