الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
[align=center]~*¤ô§ô¤*~*¤ô§ô¤*~الدرس الثاني~*¤ô§ô¤*~*¤ô§ô¤*~[/align]
في هذا الدرس سوف نتعامل مع الأدوات المتاحة والمتيسرة للمبرمج في نظم المعلومات الجغرافية وسوف يتميز هذا الدرس بإضافة أوامر جديدة، كم من الأعضاء سأل عنها وحاول أن يجد لها عن جواب ولكن دون جدوى .
ولان نقول لهم شدوا الأحزمة وستعدو للانطلاق في تصميم واجهة برمجية تعمل بكفاءة مع خرائط نظم المعلومات الجغرافية
[align=center]ونقول بالبداية][][§¤°^°¤§][][ ( بسم الله مجريها ومرساها)][][§¤°^°¤§][][[/align]
الخطوة الأولى
الأدوات المطلوبة في تصميم الواجهة
1- Mapcontrol
2- Microsoft Common Dialog Control
3 Toolbar
4- ImageList
5- Label
والحمد الله كل هذه المكونات متوفرة لديكم وتستطيعون إضافتها من خلال النافذة التالية
وأعتقد أنكم تعرفون كيف الوصول إلى هذه النافذة ( راجع الدرس الأول
)http://www.gisclub.net/vb/images/upl...434af17c9c.JPG
الخطوة الثانية
نرسم هذه الأدوات على الواجهة البرمجية
http://www.gisclub.net/vb/images/upl...43720bfcde.JPG
الخطوة الثالثة
نأخذ Right Click على اداة ImageList ثم ناختار Propreties كما هو موضح في الصورة السابقة تظهر لنا النافذه التالية
http://www.gisclub.net/vb/images/upl...438abd12af.JPG
من خلال ايقونة 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 )
http://www.gisclub.net/vb/images/upl...4d26f5a19a.JPG
بعد ذلك انتقل الى التبويب Button تظهر لك النافذة التالية
http://www.gisclub.net/vb/images/upl...4d3ced70a7.JPG
من هذه النافذة نقوم بإضافة الايقونات التي صممناها في الخطوة الثالثة وهنا تعرفون لماذا طلبنا منكم إخضار ورقة وقلم
في رقم ( 1 ) يمثل رقم ال Index وتفقنا ان رقم واحد هو فتح ملف والان ماعليك الا كتابة Open في خانة رقم ( 4 , 5 , 6 ) وبعد ذلك تضيف الايقونه الثانية من خلال الضغط على رقم ( 7 ) Insert Button وتفقنا انها تكون إضافة بيانات وتكتب LoadData في خانة رقم ( 4 , 5 , 6 ) وهكذا كرر العملية مع كل الايقونات
حتى يخرج شكلها النهائي بهذا الشكل
http://www.gisclub.net/vb/images/upl...4d8b9d0eb6.JPG
الخطوة الخامسة
نقوم بإضافة الأكواد الى الواجهة البرمجية
اعمل دبل كلك على 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 حتى لا تظهر لكم الرسائل المزعجة وتخبركم بوجود خطأ
http://www.gisclub.net/vb/images/upl...4e9d9d8bff.JPG
والملفات المطوبة هي ( أنظر الصورة)
http://www.gisclub.net/vb/images/upl...4ea355e104.JPG
[align=center]
والآن تمتع ببرنامجك الجديد[/align]
http://www.gisclub.net/vb/images/upl...4ec58bc870.JPG
[align=center]«®°·.¸.•°°·.¸¸.•°°·.¸.•°®»وأخيراً نسألكم الدعاء لي و لي والدي«®°·.¸.•°°·.¸¸.•°°·.¸.•°®»[/align]
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
سلمت يداك يا أخ فهد وبارك الله فيك ولك
علي فكرة تم حذف الموضوع المكرر
بالتوفيق
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
بارك الله فيك وفيما تقدم جزاك الله عنا خيرا
دمت في امان
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
أخى فهد رغم انه مش اهتمامى البرمجة لكن ما تقدمه من دروس تشجع على الدخول فى هذا المجال
بارك الله فيك واعدت الروح للمنتدى بهذه الدروس المتخصصة جدا والتى تنطلق بالمنتدى إلى أفاق جديدة لم يتطرق إليها أى موقع أخر
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
بارك الله فيك اخى فهد المطلق ونرجوا الاستمرار
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
[align=center]غفر الله لك و لوالدك وجزاكما خير الجزاء
[/align]
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
بارك الله فيك وفي جهودك يا فهد
وأقول لمختار نعم ثم نعم فأنت والجميع لها
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
اخى العزيز فهد المطلق
شكرا كثيرا لك فقد قمت بحل الكثير من المشاكل التى واجهاتنى
والحمد لله بفضل الله ثم لك قد تمكنت فى التغلب عليها
ونتمنى عدم التوقف عن هذا الابداع ومحاولة التقدم الى الوصول الى مرحلة الاحتراف باذن الله
ولى استفسار صغير ماهو الكود الخاص بعمل zoom out
وارجو من حضرتك التواصل معنا وايضا من الاخوة الاعضاء ونتمنى ايضا طرح الاسئلة والمناقشات للاستفادة
وغفر الله لك ولواالدك
فى امن الله
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
شكرا لك اخي فهد ما قصرت
جزاك الله كل خير
يا طيب انا جربت الدرس التاني طلعلعى غلط وخصوصا في كود toolbar وخصوصا المتغيرا x ,y
بتعمل معرف اذا بتحمل المشروع اللى عملتو مفتوح المصدر
شكرا مسبقا
رد : الدرس الثاني في تصميم واجهة برمجية تتفاعل مع خرائط نظم المعلومات الجغرافية
السلام عليكم
مشكور كتير اخى فهد على هدا المجهود
وجارى التنفيذ
كان لدى استفسار فى مشاركة ماضية عن الاستعلام ، وقد تكرمت ورفعت بروقرام
بس لقيته ما الشئ اللى انا طالبته ، انا بدى اعمل تكست بوكس وكوماند ،
فى التكست يكتب اليوزر اسم المنطقة مثلا ، ويضغط ع الكوماند ويعطيه تقرير عن هدى المنطقة فقط
وشكرا
انا فى انتظار الرد