You are on page 1of 13

‫مقدمة بسيطة لعمل استعالم بسيط باستخدام ال ‪ ArcObjects‬مع ال ‪...

VBA‬‬

‫كيف أبدا ؟ و ما هي نقطة البداية لعمل أمر أو أداة في برنامج (‪)ArcMap‬‬

‫نقطة البداية هي إضافة زر األمر أو األداة إلي شريط أدوات (‪.)ArcMap‬‬

‫صندوق الحوار الخاص بعملية التخصيص (‪ , )Customization‬و يتم الوصول إليه بطريقتين ‪:‬‬
‫‪ .a‬من قائمة ‪. Tool > Customize‬‬

‫‪ .b‬النقر مرتين على أي مكان فارغ مكان شريط األدوات‪.‬‬


‫صندوق الحوار الخاص بعملية التخصيص (‪:)Customize‬‬

‫ينقسم صندوق التخصيص إلى ثالثة أقسام و هي‪:‬‬


‫‪.Toolbars ‬‬
‫‪.Commands ‬‬
‫‪.Options ‬‬

‫‪:Toolbars‬‬
‫و تحتوي على جميع أشرطة األدوات الموجودة في البرنامج‪ ,‬بحيث يمكن التحكم بإظهار وإخفاء هذه األشرطة‪,‬‬
‫كما يمكن إنشاء شريط جديد إلضافة األوامر التي قمت بتطويرها‪.‬و هذا ما سنقوم به الحقا في هذا الدرس‪.‬‬

‫‪:Commands‬‬
‫هذا القسم يحتوي على جميع األوامر و األدوات المتاحة من قبل البرنامج و هذه األدوات مقسمة في مجموعات‬
‫حسب وضيفة كل أداه ‪ .‬بحيث يمكن أن تختار ما تريد إظهاره و وضعه في شريط أدوات مناسب و يتم ذلك عن‬
‫طريق السحب و الرمي (‪ )Drag and Drop‬ألي أداة تريد أن تكون متاحة في شريط األدوات‪.‬‬

‫‪:Options‬‬
‫يحتوي على تفصيالت و خيارات أكثر لعملية التخصيص‪.‬‬
‫إضافة شريط أدوات جديد إلى أل (‪.)ArcMap‬‬
‫فتح صندوق الحوار الخاص بالتخصيص‪.‬‬ ‫‪-1‬‬
‫اضغط على الزر (‪ ,)New‬سيظهر صندوق الحوار التالي‪:‬‬ ‫‪-2‬‬

‫يحتوي هذا الصندوق على حقلين‪ ,‬الحقل األول لكتابة اسم الشريط الجديد‪ ,‬و الحقل الثاني لتحديد مكان‬
‫تخزين الشريط الجديد‪ ,‬و هنا يوجد نوعين من التخزين و هما‪:‬‬
‫‪ ‬التخزين في الملف الحالي ( و يتم باختيار اسم الملف ( ‪.) Untitled‬‬
‫‪ ‬التخزين على مستوى التطبيق‪ ,‬بمعني أن الشريط الجديد سوف يكون متاحا لجميع الملفات التي‬
‫سوف يتم إنشاءها باستخدام أل (‪ ,)ArcMap‬و تتم هذه باختيار (‪. )Normal.mxt‬‬
‫بعد اختيار اسم شريط األدوات الجديد و مكان التخزين انقر األمر (‪ .)OK‬ستالحظ أن الشريط الجديد‬ ‫‪-3‬‬
‫قد ظهر على الشاشة و يمكنك وضعه في المكان الذي تريد في المساحة المخصصة لذلك‪.‬‬

‫بعد إنشاء شريط األدوات و إضافته إلى أل (‪ )ArcMap‬اآلن يمكنك إنشاء أمر جديد و إضافته إلى شريط‬
‫األدوات الجديد‪.‬‬

‫إنشاء أمر جديد‪‰:‬‬

‫إلنشاء أمر جديد يجب عليك أن تتبع الخطوات التالية‪:‬‬


‫من صندوق التخصيص اختر (‪. )Commands‬‬ ‫‪-1‬‬
‫‪ -2‬من قائمة (‪ )Categories‬على اليسار‪ ,‬اختر ( [‪ ,) ]UIControls‬عندئذ سيظهر في أسفل الصندوق‬
‫ثالث أزرار أوامر‪:‬‬
‫‪ ,New UIControl‬إلضافة أمر جديد‪.‬‬ ‫‪‬‬
‫‪ ,Delete UIControl‬لحذف أمر‪.‬‬ ‫‪‬‬
‫‪ ,Description‬إلعطاء وصف عن أمر موجود‪.‬‬ ‫‪‬‬

‫في حالتنا سوف نقوم باختيار (‪.)New UIControl‬‬ ‫‪-3‬‬

‫في صندوق (‪ )New UIControl‬يوجد أربع انواع‪:‬‬

‫‪UIButtonControl‬‬ ‫‪‬‬
‫‪UIEditBoxControl‬‬ ‫‪‬‬
‫‪UIToolControl‬‬ ‫‪‬‬
‫‪UIComboBoxControl‬‬ ‫‪‬‬

‫نحن سوف نستخدم (‪ , )UIButtonControl‬و هو عبارة عن زر أمر‪.‬‬


‫اختر ‪ UIButtonControl‬و انقر األمر (‪ , )Create‬سيتم إضافة األمر الجديد‪ ‰‬في قائمة ال (‬ ‫‪-4‬‬
‫‪ )Commands‬على يمين صندوق التخصيص‪.‬‬
‫قم بتغيير اسم األمر بما يناسب عمله في هذه الحالة سوف نسميه (‪ , )NewCommand‬ستالحظ أن‬ ‫‪-5‬‬
‫اسم األمر يكون على الشكل (‪ , )project.NewCommand‬الشق األول من االسم ( ‪) Project‬‬
‫يعني أن األمر الجديد‪ ‰‬تابع للملف الحالي (مكان التخزين) ‪ ,‬و الشق الثاني من االسم (‬
‫‪ )NewCommand‬هو اسم األمر الجديد‪‰.‬‬
‫قم بسحب و رمي األمر الجديد‪ ‰‬إلى شريط األدوات الذي قمت بإنشاءه في الفقرة السابقة‪ ( .‬يمكن أن‬ ‫‪-6‬‬
‫تضع األمر الجديد في أي شريط أدوات موجود في التطبيق ‪ ,‬لكن للوضوح قمنا بإضافته إلى شريط‬
‫األدوات الذي قمنا بانشاءه )‪.‬‬
‫تغيير الشكل و األيقونة الخاصة باالمر الجديد ‪:‬‬ ‫‪-7‬‬
‫أبقي صندوق التخصيص مفتوحا‪.‬‬ ‫‪‬‬
‫اذهب الى األمر الذي تريد تغيير أيقونته ‪.‬‬ ‫‪‬‬
‫انقر بزر الفأرة اليمين ‪ ,‬ستظهر لك القائمة التالية‪:‬‬ ‫‪‬‬
‫قم بتعديل ما تريد و من ثم أغلق صندوق التخصيص‪.‬‬ ‫‪-8‬‬

‫التعامل مع ( ‪ ) ArcObjects‬من خالل أل ( ‪. ) Visual Basic For Applications‬‬

‫مثال‪:‬‬

‫انظر إلى الشكل التالي‪:‬‬

‫يحتوي الشكل على خريطة آسيا ‪ ,‬و لقد قمت باختيار مدينة الرياض عاصمة المملكة العربية السعودية كمثال ‪,‬‬
‫سوف أقوم بكتابة أل (‪ )Code‬الالزم للوصول على المعلومات الوصفية لمدينة الرياض ‪ .‬و إظهار هذه‬
‫المعلومات في صندوق حوار باستخدام (‪ .)VBA‬هذا المثال البسيط جدا يوضح كيف يمكن أن نتعامل مع المعالم‬
‫الموجودة على الخريطة من خالل البرمجة باستخدام ال (‪.)ArcObjects‬‬

‫البرمجة واستخدام ال (‪: )ArcObjects‬‬

‫سوف نستخدم لغة ال (‪ )VBA‬و التي هي موجودة أصال ضمن برناج ال (‪ , )ArcMap‬و يمكن الوصول اليه‬
‫بأكثر من طريقة كاآلتي ‪:‬‬

‫‪.Tools >> Macros>> visual Basic Editor .1‬‬


‫‪.Alt + F11 .2‬‬

‫الشاشة الرئيسية ‪:‬‬

‫مالحظة مهمة ‪:‬‬


‫في الجانب االيسر من الصورة (‪:)Project - Project‬‬
‫نالحظ انه يوجد شجرة مكونة من ثالث أقسام ‪:‬‬

‫)‪.Normal (Normal.mxt‬‬ ‫‪‬‬


‫‪.Project‬‬ ‫‪‬‬
‫)‪.TemplateProject (Asia.mxt‬‬ ‫‪‬‬

‫ما معنى كل واحد من هذه األقسام ؟؟‬

‫هذه االقسام تساعد في تخزين التخصيص الذي قمت به ‪ ,‬فعلي سبيل المثال اذا قمت بكتابة الكود الخاص بك في‬
‫قسم ال (‪ )Normal‬سيكون متاح الي (‪ ).mxd‬يتم انشاءها باستخدام اآلرك ماب ‪ ,‬أما اذا قمت بتخزينه في (‬
‫‪ )TemplateProject‬فإنه سوف يكون متاح لكل (‪ )mxd.‬تستخدم هذا القالب ‪ .‬و أخيرا اذا قمت بتخزين‬
‫التخصيص في قسم (‪ )Project‬سوف يكون متاح فقط للملف الحالي و سوف لن ترى اي أثر له في أي (‪)mxd.‬‬
‫أخرى‪.‬‬

‫مالحظة ‪:‬‬
‫ال (‪ )TemplateProject‬لن يظهر اال اذا كنت تستخدم قالب (‪.)mxt.‬‬

‫في حالتنا سوف نقوم بكتابة الكود في قسم ال (‪ )Project‬بمعنى اننا سوف نقوم بتخزين التخصيص في الملف‬
‫الحالي و لن يكون متاح في اي ملف آخر‪.‬‬

‫قم بفتح ال(‪.)VBA‬‬

‫أختر من القائمة كما هو مبين أدناه‪.‬‬

‫سوف يتم انشاء الكود التالي أوتوماتيكيا ‪:‬‬

‫هذا الكود سوف ينفذ عندما يتم الضغط على زر االمر الجديد‪ ‰‬و الذي اسمه (‪.)UIButtonControl1‬‬
‫سوف نقوم بانشاء (‪ )UserForm‬لنستخدمه في عرض بيانات مدينة الرياض ‪,‬كما يلي ‪:‬‬
‫اضغط على الزر األيمن للفأرة و أنت تشير الى (‪ )Project‬كمت يبين الشكل ‪:‬‬

‫قم بتصميم شكل ال (‪ )UserForm‬كما يلي‪:‬‬


‫قم بكتابة الشيرفة التالية في الحدث (‪ ) Initialize‬لل (‪: )UserForm‬‬
‫الرسم التالي يوضح الكود المكتوب وما معنى كل سطر به‪.‬‬

‫هنا تم الوصول الى الملف الذي امتداده (‪ )mxd.‬و الذي من نوع (‪)MxDocument‬‬
‫الوصول الى الخريطة الفعالة‪.‬‬

‫الوصول الى طبقة المدن و‬


‫التي موقعها (صفر)‪.‬‬

‫و يستخدم للوصول الى ال (‪ )Feature Class‬الخاصة بالمدن ‪ .‬ال (‪ )Feature Class‬عبارة عن مجموعة من‬
‫المعالم ذات الشكل الهندسي الواحد ‪ ,‬مثل (‪ . )Line , Point , Polygon‬و أيضا تكون لها نفس المعلومات‬
‫الوصفية (‪ )attributes‬و نفس المرجعية المكانية (‪.)spatial reference‬‬

‫هذا يسمى مؤشر و يستخدم للزيارة السجالت بشكل تسلسلي‪:‬‬


‫هذة األسطر عبارة عن فلترة للمعلومات بحيث يقوم بحيث يتم تحديد الشرط الذي سوف يجلب لي السجل الذي‬
‫اريده‪ .‬و هنا السجل اسمه "‪."Ar Riyad‬‬

‫في هذة الحالة سوف يتم ارجاع سجل واحد فقط و هو مدينة‪ ‰‬الرياض ‪.‬‬

‫هذة الجملة تبحث في مجموعة السجالت الموجودة في (‪ )pFClass‬و ترجع الذي بحقق الشرط فقط ‪.‬‬

‫السطور الخمسة األخيرة و يتم تعريف متغير من نوع (‪ )IFeature‬ليتم استخدامه بشكل مؤقت لنتمكن من‬
‫الوصول الى المعلومات الوصفية التابعة لهذا ال (‪.)IFeature‬‬

‫تعني انا (‪ )IFeature‬أصبح يؤشر على‬ ‫الجملة‬


‫السجل االول و الوحيد في متغير المؤشر‪.‬‬

‫في حالة التنفيذ يعطي النتيجة التالية‪:‬‬


‫مع تحياتي ‪:‬‬
‫راشد مصطفى‬
‫مبرمج نظم معلومات جغرافية‬
‫شركة أوبن وير – ‪ - ESRI Distributor‬الكويت‬
‫‪rashedgis@yahoo.com‬‬

You might also like