WPAMenuItem Implementation

[Top]  [Chapter]  [Previous]  [Next]

// This is how the utilty class has been implemented

 

// Interface required in WinForm

public interface IGetCurrEditor

{

         WPDynamic.WPDLLInt CurrEdit();

}

 

// Utility class  WPAMenuItem

public class WPAMenuItem : System.Windows.Forms.MenuItem

{

         // the ID

         public int wpaID = -1;

         // the for to work with (must have CurrEdit function)

         private IGetCurrEditor ParentForm;

         // Constructor

         public WPAMenuItem(IGetCurrEditor p, string wpa)

         {

                 ParentForm = p;

                 if(ParentForm.CurrEdit()!=null)

                 {

                         wpaID = ParentForm.CurrEdit().wpaGetID(wpa);

                         if (wpaID<0) Enabled = false;

                         Text = wpa;

                 }

         }

         // Process a click

         protected override void OnClick(EventArgs e)

         {

            if ((wpaID>=0)&&(ParentForm.CurrEdit()!=null))

                    ParentForm.CurrEdit().wpaExec(wpaID,"");

         }

         // Update the string of this item

         public void Update()

         {

            string n="",c="",h="";

            if ((wpaID>=0)&&(ParentForm.CurrEdit()!=null))

          {

                    if (ParentForm.CurrEdit().Memo.wpaGetCaption(

wpaID, ref n, ref c, ref h))

                    {

                           Text = c;

                    }

            }

            for(int i=0;i<MenuItems.Count;i++)

                  if (MenuItems[i] is WPAMenuItem)

                         (MenuItems[i] as WPAMenuItem).Update();

         }

         // Update the current state

         protected override void OnPopup(EventArgs e)

       {

                  if (ParentForm.CurrEdit()!=null)

                  {

                          byte[] flags = ParentForm.CurrEdit().wpaGetFlags(0);

                          if (wpaID>=0)

                {

                                  Enabled = (flags[wpaID]&1)!=0;

                                  Checked = (flags[wpaID]&2)!=0;

                          }

                          for(int i=0;i<MenuItems.Count;i++)

                          if (MenuItems[i] is WPAMenuItem)

                          {

                                  if ((MenuItems[i] as WPAMenuItem).wpaID>=0)

                                   {

                                           MenuItems[i].Enabled =

(flags[(MenuItems[i] as WPAMenuItem).wpaID]&1)!=0;

                                           MenuItems[i]. Checked =

(flags[(MenuItems[i] as WPAMenuItem).wpaID]&2)!=0;

                                   }

                          }

                  }

         }

}

 

 


[c_wpamenuitem.htm]    Copyright © 2007 by WPCubed GmbH