Шаг 10.
Компоненты библиотеки RX.
Вкладка RX Tools. Компонент TMRUManager

    На этом шаге мы рассмотрим компонент TMRUManager.

    Если свойство AutoUpdate = True (по умолчанию), то при каждом изменении в списке для пункта меню RecentMenu автоматически будет изменяться подменю с элементами списка. Вы можете вручную привести меню в соответствие с содержимым списка, вызвав метод UpdateRecentMenu. При создании пунктов меню по умолчанию создаются пункты с заголовком, совпадающим со строкой из списка, которую вы передали в методе Add. Вы можете также обработать событие OnGetItemData для изменения заголовка создаваемого пункта меню и задания его свойства ShortCut (по умолчанию scNone).

    Если ShowAccelChar=True (по умолчанию), то в строку заголовка элемента меню будет добавлен "подчеркнутый" символ, соответствующий порядковому номеру элемента ('1'..'9', 'A', 'B'... и т.д.). Если значение свойства SeparateSize больше нуля, то в создаваемое подменю будут добавлены разделители между каждыми SeparateSize элементами меню. При выборе пользователем пункта меню из созданного подменю будет вызвано событие OnClick.

    Для сохранения и восстановления списка в INI-файле или (в 32-разрядной версии) в системном регистре воспользуйтесь свойством IniStorage или методами SaveToIni, LoadFromIni, SaveToRegistry, LoadFromRegistry. Вы можете также использовать компонент TMRUManager без подключения к меню, например, помещая список в TListBox или в TComboBox. В этом случае вы должны сами заполнять списки этих элементов управления из списка TMRUManager, который доступен в run-time через свойство Strings.

Таблица 1. Свойства и методы компонента TMRUManager
Свойство Описание
property AutoUpdate: Boolean; Если свойство AutoUpdate = True (по умолчанию), то для пункта меню RecentMenu автоматически будет изменяться подменю с элементами списка при каждом изменении в списке. Когда список пуст, пункт меню RecentMenu будет запрещенным. Вы можете также вручную привести меню в соответствие с содержимым списка, вызвав метод UpdateRecentMenu.
property RecentMenu: TMenuItem; Свойство задает пункт в меню, для которого будет создавать подменю со списком MRU-элементов. При пустом списке элемент RecentMenu запрещается, если свойство AutoEnable равно True.
property AutoEnable: Boolean; Если свойство AutoEnable установлено в True, то пункт меню RecentMenu будет автоматически разрешаться или запрещаться в зависимости от количества пунктов в нем (элементов в MRU-списке). Свойство обычно используется, если пункт меню RecentMenu содержит только элементы из MRU-списка.
procedure Add(const RecentName: string; UserData: Longint); Метод служит для добавления строки в список MRU-элементов. Параметр UserData позволяет вам ассоциировать с элементом некоторые ваши данные. В дальнейшем этот параметр будет передаваться в обработчики событий OnClick, OnGetItemData, OnReadItem, OnWriteItem. В зависимости от значения свойства Mode элемент будет добавлен либо в начало, либо в конец списка.
procedure Remove(const RecentName: string); Метод служит для удаления строки RecentName из списка. В качестве параметра RecentName передается та же строка, что использовалась при добавлении строки в список. Если переданная строка не найдена в списке, то метод не выполняет никаких действий. Вы можете, например, в приложении работы с файлами вызывать метод Remove(FileName) при открытии окна с файлом, и метод Add(FileName, UserData) при закрытии окна с файлом.
property OnClick: TClickMenuEvent; Событие происходит при выборе пользователем пункта из подменю, созданного компонентой TMRUManager. В качестве параметров в метод-обработчик события передаются заданные при добавлении элемента в список строка RecentName и значение UserData, а также заголовок пункта меню Caption (который дополнительно может содержать символ-акселератор или может быть изменен в обработчике события OnGetItemData).
property OnGetItemData: TGetItemEvent; При создании элементов подменю в RecentMenu по умолчанию создаются пункты с заголовком, совпадающим со строкой из списка, которую вы передали в методе Add. Вы можете также обработать событие OnGetItemData для изменения заголовка создаваемого пункта меню (параметр Caption) и задания его свойства ShortCut (по умолчанию scNone).
property Capacity: Integer; Свойство задает общую максимальную емкость списка. Если при добавлении нового элемента будет превышена эта величина, автоматически будет удален из списка наиболее старый (последний) элемент. Новый элемент всегда добавляется в начало списка, если свойство Mode = rmInsert, и в конец списка, если Mode = rmAppend.
property Mode: TRecentMode; Свойство определяет, как будут добавляться элементы в список компоненты TMRUManager. Если значение свойства равно rmInsert (по умолчанию), то вновь добавляемый элемент вставляется в начало списка (или, если такой элемент уже существует, перемещается в начало списка). При значении rmAppend добавляемый элемент появляется в конце списка.
property ShowAccelChar: Boolean; Если ShowAccelChar=True (по умолчанию), то в строку заголовка элемента меню будет добавлен "подчеркнутый" символ, соответствующий порядковому номеру элемента ('1'..'9', 'A', 'B'... и т.д.), при этом первым номером в списке считается значение свойства StartAccel. Этот символ будет использоваться как акселератор для быстрого выбора соответствующего пункта меню.
property StartAccel: Cardinal; Если ShowAccelChar=True (по умолчанию), то в строку заголовка элемента меню будет добавлен "подчеркнутый" символ, соответствующий порядковому номеру элемента ('1'..'9', 'A', 'B'... и т.д.), при этом первым номером в списке считается значение свойства StartAccel (по умолчанию = 1).
property SeparateSize: Word; Свойство позволяет создавать разделители на равном расстоянии между пукнтами в меню RecentMenu. Если значение свойства SeparateSize больше нуля, то в создаваемое подменю будут добавлены разделители между каждыми SeparateSize элементами меню.
type TGetItemEvent = procedure (Sender: TObject; var Caption: string; var ShortCut: TShortCut; UserData: Longint) of object; Тип определяет процедуру - обработчик события OnGetItemData компонента TMRUManager.
procedure SaveToIni(Ini: TIniFile; const Section: string); Метод служит для сохранения в INI-файле списка компонента TMRUManager для последующего восстановления его с помошью метода LoadFromIni. Список записывается в специфицированный INI-файл в секцию с именем, возвращаемым функцией GetDefaultSection. Если вы задали значение свойству IniStorage, то список будет сохраняться и восстанавливаться автоматически.
procedure LoadFromIni(Ini: TIniFile; const Section: string); Метод служит для восстановления из INI-файла списка компонента TMRUManager, если он был сохранен там с помошью метода SaveToIni. Текущие установки не изменяются, если специфицированный INI-файл не содержит данных об установках компоненты. Если вы задали значение свойству IniStorage, то список будет сохраняться и восстанавливаться автоматически.
property IniStorage: TFormPlacement; Свойство позволяет автоматически сохранять специфические установки компоненты в INI-файле или (для 32-разрядной версии) в системном регистре при помощи компонентов TFormPlacement или TFormStorage. При задании значения свойству IniStorage (и непустом имени компоненты), некоторые ее настройки, которые не являются published-свойствами и не могут быть заданы для TFormStorage напрямую, будут сохраняться и восстанавливаться одновременни с другими значениями, заданными для соответствующего компонента TFormPlacement (TFormStorage).

    На следующем шаге мы рассмотрим компонент TSecretPanel.




Предыдущий шаг Содержание Следующий шаг