This article is available in English too, check it out here.
كنا قد تكلمنا سابقا عن كيفية التعامل مع شخصيات Microsoft Agent في برنامجك، ولكننا قد أهملنا الكلام عن كيفية تغيير القائمة المنسدلة الأساسية الخاصة بالشخصية والتي لا تحوي سوى عنصر واحد فقط وهو Hide لإخفاء الشخصية. وأتوقع أنكم مستائين منها كثيرا (مثلا تماما.)
واليوم نتكلم عن كيفية إنشاء القائمة المنسدلة الخاصة بك، وإضافة العناصر التي تريدها إلى هذه القائمة.
أولا، قم بفتح مشروعك الذي يستخدم هذه التقنية. وفي المشروع قم بإنشاء القائمة المنسدلة التي تريدها باستخدام الأداة System.Windows.Forms.ContextMenuStrip. قم بإضافة العناصر التي تريدها إلى القائمة وكتابة الأكواد الخاصة بهذه العناصر.
الآن، إلى عملية الربط. اذهب إلى الكود الذي يقوم بتحميل الشخصية من الملف الخاص بها وقم بإلغاء القائمة الأساسية عن طريق تحديد الخاصية AutoPopupMenu الخاصة بعنصر الشخصية لتصبح False. لاحظ الكود التالي:
// C# Code AxAgentObjects.AxAgent agentCtl; AgentObjects.IAgentCtlCharacterEx agentChar; // initializing 'agentCtl' // . . . agentCtl.Characters.Load("Merlin", "merlin.acs"); agentChar = agentCtl.Characters.Character("Merlin"); agentChar.AutoPopupMenu = false;
' VB.NET Code Dim agentCtl As AxAgentObjects.AxAgent Dim agentChar As AgentObjects.IAgentCtlCharacterEx ' initializing 'agentCtl' ' . . . agentCtl.Characters.Load("Merlin", "merlin.acs") agentChar = agentCtl.Characters.Character("Merlin") agentChar.AutoPopupMenu = False
إلى الآن، قمنا بإلغاء استخدام القائمة الأساسية فقط. الآن ننتقل إلى النقطة الأكثر إثارة، وهي ربط القائمة الجديدة بالشخصية. يمكنك ذلك عن طريق استخدام الحدث ClickEvent الخاص بأداة Microsoft Agent والذي ينطلق عند ضغط المستخدم على الشخصية بالفأرة.
لاحظ الكود التالي:
// C# Code // agentCtl.ClickEvent += agent_ClickEvent; public void agentCtl_ClickEvent _ (object sender, AxAgentObjects._AgentEvents_ClickEvent e) { // check for this if you have many characters if (e.characterID == "Merlin") { if (e.button == 2) // 1 = left, 2 = right { myContextMenu.Show(e.x, e.y); } }
' VB.NET Public Sub agentCtl_ClickEvent(ByVal sender As object, _ ByVal e As AxAgentObjects._AgentEvents_ClickEvent) _ Handles agentCtl.ClickEvent ' check for this if you have many characters If (e.characterID = "Merlin") Then If (e.button = 2) Then ' 1 = left, 2 = right myContextMenu.Show(e.x, e.y) End If End If End Sub
نلاحظ أننا قمنا أولا باكتشاف ما إذا كانت هذه هي الشخصية المطلوبة أم لا. لاحظ أنه في حالة استخدامك لأكثر من شخصية فسوف تحتاج إلى هذا السطر (على الأغلب.) بعد ذلك قمنا باكتشاف ما إذا تم الضغط بزر الفأرة الأيمن (والذي يرمز إليه الرقم 2 بينما الأيسر يرمز إليه الرقم 1) أم لا.
وأخيرا، قمنا بإظهار القائمة المنسدلة من النقطة التي ضغط عليها المستخدم.
بالتأكيد، سهل وبسيط جدا.
يمكنك ذلك باستخدام الأداة
Microsoft Agent Character Editor
رابط التحميل:
http://www.microsoft.com/downloads/details.aspx?FamilyID=c21be0ec-1712-427d-a43d-94c122ef8eb6
رابط الشرح:
http://msdn.microsoft.com/en-us/library/ms695797.aspx
سوف نخصص بإذن الله درس لشرح هذا الموضوع عن قريب بإذن الله تعالى
إعجابإعجاب
بالتأكيد، سهل وبسيط جدا.
يمكنك ذلك باستخدام الأداة
Microsoft Agent Character Editor
رابط التحميل:
http://www.microsoft.com/downloads/details.aspx?FamilyID=c21be0ec-1712-427d-a43d-94c122ef8eb6
رابط الشرح:
http://msdn.microsoft.com/en-us/library/ms695797.aspx
سوف نخصص بإذن الله درس لشرح هذا الموضوع عن قريب بإذن الله تعالى
إعجابإعجاب