TMRUManager Component

Если свойство 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.



Declaration
property AutoUpdate: Boolean;

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



Declaration
property RecentMenu: TMenuItem;

Description
Свойство задает пункт в меню, для которого будет создавать подменю со списком MRU-элементов. При пустом списке элемент RecentMenu запрещается, если свойство AutoEnable равно True.



Declaration
property AutoEnable: Boolean;

Description
Если свойство AutoEnable установлено в True, то пункт меню RecentMenu будет автоматически разрешаться или запрещаться в зависимости от количества пунктов в нем (элементов в MRU-списке).
Свойство обычно используется, если пункт меню RecentMenu содержит только элементы из MRU-списка.


Declaration
procedure Add(const RecentName: string; UserData: Longint);

Description
Метод служит для добавления строки в список MRU-элементов.
Параметр UserData позволяет Вам ассоциировать с элементом некоторые Ваши данные. В дальнейшем этот параметр будет передаваться в обработчики событий OnClick, OnGetItemData
, OnReadItem, OnWriteItem.

В зависимости от значения свойства Mode элемент будет добавлен либо в начало, либо в конец списка.


Declaration
procedure Remove(const RecentName: string);

Description
Метод служит для удаления строки RecentName из списка. В качестве параметра RecentName передается та же строка, что использовалась при добавлении строки в список.
Если переданная строка не найдена в списке, то метод не выполняет никаких действий.
Вы можете, например, в приложении работы с файлами вызывать метод Remove(<FileName>) при открытии окна с файлом, и метод Add(<FileName>, <UserData>) при закрытии окна с файлом.


Declaration
property OnClick: TClickMenuEvent;

Description
Событие происходит при выборе пользователем пункта из подменю, созданного компонентой TMRUManager. В качестве параметров в метод-обработчик события передаются заданные при добавлении элемента в список строка RecentName и значение UserData, а также заголовок пункта меню Caption (который дополнительно может содержать символ-акселератор или может быть изменен в обработчике события OnGetItemData).


Declaration
property OnGetItemData: TGetItemEvent;

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


Declaration
property Capacity: Integer;

Description
Свойство задает общую максимальную емкость списка. Если при добавлении нового элемента будет превышена эта величина, автоматически будет удален из списка наиболее старый (последний) элемент. Новый элемент всегда добавляется в начало списка, если свойство Mode = rmInsert, и в конец списка, если Mode = rmAppend.


Declaration
property Mode: TRecentMode;

Description
Свойство определяет, как будут добавляться элементы в список компоненты TMRUManager.
Если значение свойства равно rmInsert (по умолчанию), то вновь добавляемый элемент вставляется в начало списка (или, если такой элемент уже существует, перемещается в начало списка). При значении rmAppend добавляемый элемент появляется в конце списка.


Declaration
property ShowAccelChar: Boolean;

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


Declaration
property StartAccel: Cardinal;

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


Declaration
property SeparateSize: Word;

Description
Свойство позволяет создавать разделители на равном расстоянии между пукнтами в меню RecentMenu. Если значение свойства SeparateSize больше нуля, то в создаваемое подменю будут добавлены разделители между каждыми SeparateSize элементами меню.


Declaration
type
TGetItemEvent = procedure (Sender: TObject; var Caption: string; var ShortCut: TShortCut; UserData: Longint) of object;
Description
Тип определяет процедуру — обработчик события OnGetItemData компоненты TMRUManager.


Declaration
procedure SaveToIni(Ini: TIniFile; const Section: string);

Description
Метод служит для сохранения в INI-файле списка компоненты TMRUManager для последующего восстановления его с помошью метода LoadFromIni.
Список записывается в специфицированный INI-файл в секцию с именем, возвращаемым функцией GetDefaultSection.

Если Вы задали значение свойству IniStorage, то список будет сохраняться и восстанавливаться автоматически.


Declaration
procedure LoadFromIni(Ini: TIniFile; const Section: string);

Description
Метод служит для восстановления из INI-файла списка компоненты TMRUManager, если он был сохранен там с помошью метода SaveToIni. Текущие установки не изменяются, если специфицированный INI-файл не содержит данных об установках компоненты.

Если Вы задали значение свойству IniStorage, то список будет сохраняться и восстанавливаться автоматически.


property IniStorage: TFormPlacement;

Description
Свойство позволяет автоматически сохранять специфические установки компоненты в INI-файле или (для 32-разрядной версии) в системном регистре при помощи компонент TFormPlacement или TFormStorage.

При задании значения свойству IniStorage (и непустом имени компоненты), некоторые ее настройки, которые не являются published-свойствами и не могут быть заданы для TFormStorage напрямую, будут сохраняться и восстанавливаться одновременни с другими значениями, заданными для соответствующей компоненты TFormPlacement (TFormStorage).
Для TSpeedbar — это расположение кнопок на панели и положение самой панели, для TMRUManager — список строк, для TRxDBGrid — ширины и положение полей в таблице и т.д. Все компоненты, имеющие свойство IniStorage, имеют также методы для сохранения и восстановления их настроек вручную, такие как Save/RestoreLayout и т.д.