[Back to MISC SWAG index] [Back to Main SWAG index] [Original]

    {
    >I've been trying to create a simple pick list using Object Proffesional and
    >can't seem to get it to do what I want. I'm using the expick.pas example as
    >start for creating my pick list. Everything is pretty much the same except
    >that I want my pick list to exit with other keys insted of the enter key.
    >The manual doesn't go into detail about this.

    Check out the docs for OpCmd.  The procedure that you're wanting is
    "AddCommand".   In my example below, I've set up a multiple choice list
    that "remaps" the <Enter> key to toggle (like the <SpaceBar>) and use
    <F10> to accept the choices.  Here's my example:

    {DON'T FORGET TO "USE" OpCmd}

    uses
       OpCmd; {among others}

    procedure GetPicks;
    var
       PL                  :PickList;
       PickDone            :boolean;

    begin
       if not PL.InitDeluxe(screenwidth shr 1-16,5,
                            screenwidth shr 1+15,screenheight-6,
                            AltMenuCS,     {color set}
                            WinOpts,       {window options}
                            33,            {width of pick list strings}
                            NumItems,      {number of items}
                            UserStrings,   {user-string proc}
                            PickVertical,  {pick direction-type}
                            MultipleChoice,{single or multiple}
                            pkStick)then   {stick at edges}
        begin
            {error message}
            exit;
        end;
        PickCommands.AddCommand(ccToggle,1,$1C0D,0); {Enter=Toggle}
        PickCommands.AddCommand(ccSelect,1,$4400,0); {F10=Accept}
        PickDone:=false;
        repeat
           PL.Process;
           case PL.GetLastCommand of
              ccSelect:  {F10}
                 begin
                 end;

               ccQuit:
                  PickDone:=true;

               ccError:
                  begin
                     PickDone:=true;
                  end;
            end; {case}
         until PickDone;
         HideMouse;

         {NOTE THE FOLLOWING LINES:  They're needed to remap the <Enter>
          key to its original setting and gets rid of the <F10> key as
          the ccSelect.  If you want *ALL* of your pick lists throughout
          your program to behave this way, use the PickCommands.AddCommand
          at the beginning of your program.}

          PickCommands.AddCommand(ccSelect,1,$1C0D,0); {Enter=Toggle}
          PickCommands.AddCommand(ccNone,1,$4400,0); {F10=Accept}
          PL.Done;
       end;
    end;

    {
    CHARLES SERFOSS

    >I've been trying to create a simple pick list using Object Proffesional and
    >can't seem to get it to do what I want. I'm using the expick.pas example as a
    >start for creating my pick list. Everything is pretty much the same except
    >that I want my pick list to exit with other keys insted of the enter key.
    >The manual doesn't go into detail about this.

    You'll have to use the "AddCommand" method.  Here's an example.  This is
    based on "expick1.pas" from Page 4-186 of Book #1.
    }

    program PickListExample;
    uses
            OpCrt, OpRoot, OpCCmd, OpFrame, OpWindow, OpPick;
    const
            NumPizzaToppings = 5;
    var
            PizzaTop : PickList;
            PickWindowOptions : Longint;

    procedure PizzaTopping(Item : Word { etc... }) : Far;
    begin
    end;

    begin { Main }
            if not PizzaTop.InitCustom(35, 5, 45, { etc ... }) then begin
                    halt;
            end;
            PizzaTop.SetSearchMode(PicckCharSearch);
            PizzaTop.EnableExplosion(20);
            with PizzaTop.wFrame do begin
                    AddShadow...
                    AddHeader...
            end;
            { *************** Decide Which Keys In Addition To Defaults To Allow }
            { PickCommands is just mentioned at the end of page 4-207.  The      }
            { CommandProcessor Type allows you to use the functions in section   }
            { (E) OPCMD - Page 3-82.  See Page 3-95 for documentation on         }
            { the "AddCommand" method!                                           }
            { *******************************************************************}
            with PickCommands do
            begin
                    AddCommand(ccUser1,1,$5200,0); { $5200 = scan code for INS }
                    AddCommand(ccUser2,1,$5300,0); { $5300 = scan code for DEL }
            end;
            PizzaTop.Process;
            PizzaTop.Erase;
            case PizzaTop.GetLastCommand of
                    ccUser1 : ; { If User hits INS, this is executed }
                    ccUser2 : ; { If User hits DEL, this is executed }
                    ccSelect : writeln('You chose : ',PizzaTop.GetLastChoiceString);
            end;
            PizzaTop.Done;
    end. { Main }

    {
    DAVID HOWORTH

    > I've been trying to create a simple pick list using Object Proffesional
    > can't seem to get it to do what I want. I'm using the expick.pas exampl
    > start for creating my pick list. Everything is pretty much the same exc
    > that I want my pick list to exit with other keys insted of the enter ke
    > The manual doesn't go into detail about this.

    Nick--The manual does go into subtantial detail.  You just need to
    know where to look.  As with much of OPro, the things you want to
    do with a particular object may be implemented, not in the object
    per se, but in one of its ancestors.  It always pays to look in the
    manual at the ancestor's methods.

    You need to read up on CommandWindow, from which PickList is
    descended, and on CommandProcessor, in OpCmd.  Here's a relevant
    piece of code from one of my programs.  The first AddCommand adds
    an additional Quit; the others are for purposes specific to my
    application, not for predefined commands such as ccQuit.
    }
    with DialPickList { a PickList descendent } do

       with PickCommands do begin
         { Simulate WordPerfect's exit command }
         AddCommand(ccQuit,1,$4100,0);       { F7 }

         { ccUser0 = Add a new phone entry }
         AddCommand(ccUser0,1,$1E00,0);      {Alt-A}
         AddCommand(ccUser0,1,$5200,0);      {Ins}

         { ccUser1 = Delete a phone entry }
         AddCommand(ccUser1,1,$2000,0);      {Alt-D}
         AddCommand(ccUser1,1,$5300,0);      {Del}

         { ccUser2 = Edit a phone entry }
         AddCommand(ccUser2,1,$1200,0);      {Alt-E}

         { ccUser3 = Reconfigure Comm Stuff }
         AddCommand(ccUser3,1,$2E00,0);      {Alt-C}

         { ccUser4 = View log (the printing and purging routines branch
           from the browsing routine }
         AddCommand(ccUser4,1,$2F00,0);      {Alt-V}

      end; { with PickCommands }

    end; { with DialPickList }

[Back to MISC SWAG index] [Back to Main SWAG index] [Original]