Contributor: ALTON PRILLAMAN { >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" thekey to toggle (like the ) and use 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 key to its original setting and gets rid of the 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 }