[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]