# ChooseOption Methods to interact with the runescape context menu. ```{figure} ../../images/chooseoption.png ``` - - - ## TRSOption Helper record to interact with {ref}`ChooseOption`. - - - ## TRSChooseOption Core record responsible with interacting with the {ref}`ChooseOption` context menu. - - - ## ChooseOption.IsOpen ```pascal function TRSChooseOption.IsOpen(): Boolean; ``` Returns True/False if the {ref}`ChooseOption` menu is currently visible/open. Example: ```pascal WriteLn ChooseOption.IsOpen(); ``` - - - ## ChooseOption.WaitOpen ```pascal function TRSChooseOption.WaitOpen(time: Integer; interval: Integer = -1): Boolean; ``` Returns True/False if the {ref}`ChooseOption` menu is becomes visible/open within the specified `time`. Example: ```pascal WriteLn ChooseOption.WaitOpen(); ``` - - - ## ChooseOption.Open ```pascal function TRSChooseOption.Open(): Boolean; ``` Opens the {ref}`ChooseOption` context menu if it's not currently open. Example: ```pascal WriteLn ChooseOption.Open(); ``` - - - ## ChooseOption.GetOptions ```pascal function TRSChooseOption.GetOptions(): TRSChooseOption_OptionArray; ``` Returns a `TRSOptionArray` of all available options in the {ref}`ChooseOption` context menu. This is a internal method, you probably don't need to call it. - - - ## ChooseOption.FindSubmenu ```pascal function TRSChooseOption.FindSubmenu(): TBox; ``` Returns the bounds of the submenu if it exists, otherwise returns an empty TBox. - - - ## ChooseOption.Close ```pascal function TRSChooseOption.Close(): Boolean; ``` Closes the {ref}`ChooseOption` context menu if it's open. Returns True on success. Example: ```pascal WriteLn ChooseOption.Close(); ``` - - - ## ChooseOption.HasOption ```pascal function TRSChooseOption.Find(text: TStringArray; out option: TRSOption; caseSensitive: Boolean = True; closeIfNotFound: Boolean = True): Boolean; function TRSChooseOption.Find(text: TStringArray; caseSensitive: Boolean = True; closeIfNotFound: Boolean = True): Boolean; overload; ``` Methods to check if an option is available in the {ref}`ChooseOption` context menu. Returns true if the option specified is available. Example: ```pascal WriteLn ChooseOption.Find('Take'); ``` - - - ## ChooseOption.Hover ```pascal procedure TRSChooseOption.Hover(option: TRSOption); function TRSChooseOption.Hover(text: TStringArray; caseSensitive, closeOnFalse: Boolean = True): Boolean; overload; function TRSChooseOption.Hover(text: String; caseSensitive, closeOnFalse: Boolean = True): Boolean; overload; ``` Hovers the specified option if it exists on the {ref}`ChooseOption` context menu. Example: ```pascal WriteLn ChooseOption.Select('Take Bones'); ``` - - - ## ChooseOption.Select ```pascal procedure TRSChooseOption.Select(option: TRSOption; mouseAction: Int32 = MOUSE_LEFT); function TRSChooseOption.Select(text: TStringArray; mouseAction: Int32 = MOUSE_LEFT; caseSensitive: Boolean = True; closeIfNotFound: Boolean = True): Boolean; overload; function TRSChooseOption.Select(text: String; mouseAction: Int32 = MOUSE_LEFT; caseSensitive: Boolean = True; closeIfNotFound: Boolean = True): Boolean; overload; ``` Selects the specified option if it exists on the {ref}`ChooseOption` context menu. Example: ```pascal WriteLn ChooseOption.Select('Take Bones'); ``` - - - ## ChooseOption.HasSubmenu ```pascal function TRSChooseOption.HasSubmenu(): Boolean; ``` Returns True if the {ref}`ChooseOption` context menu has a submenu (indicated by ' >' in the option text). - - - ## ChooseOption.IsSubmenuOpen ```pascal function TRSChooseOption.IsSubmenuOpen(): Boolean; ``` Returns True if a submenu is currently open and visible. - - - ## ChooseOption.OpenSubmenu ```pascal function TRSChooseOption.OpenSubmenu(closeIfNotFound: Boolean = True): Boolean; ``` Opens a submenu if it exists. Returns True if successful. If closeIfNotFound is True, closes the context menu if no submenu is found. - - - ## ChooseOption.GetSubmenuOptions ```pascal function TRSChooseOption.GetSubmenuOptions(): TRSOptionArray; ``` Returns a `TRSOptionArray` of all available options in the submenu. This is a internal method, you probably don't need to call it. - - - ## ChooseOption.FindSubmenuOption ```pascal function TRSChooseOption.FindSubmenuOption(text: TStringArray; out option: TRSOption; caseSensitive, closeIfNotFound: Boolean = True): Boolean; ``` Searches for a specific option in the submenu. Returns True if found. The found option is returned through the 'option' parameter. - - - ## ChooseOption.HoverSubmenuOption ```pascal function TRSChooseOption.HoverSubmenuOption(option: TRSOption): Boolean; function TRSChooseOption.HoverSubmenuOption(text: TStringArray; caseSensitive, closeIfNotFound: Boolean = True): Boolean; overload; ``` Hovers over a specific option in the submenu. Returns True if successful. - - - ## ChooseOption.SelectSubmenuOption ```pascal function TRSChooseOption.SelectSubmenuOption(option: TRSOption): Boolean; function TRSChooseOption.SelectSubmenuOption(text: TStringArray; caseSensitive, closeIfNotFound: Boolean = True): Boolean; ``` Selects a specific option in the submenu by clicking on it. Returns True if successful. - - - ## ChooseOption variable Global {ref}`TRSChooseOption` variable.