[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]