Глава 12. РАЗРАБОТКА ОКОННОГО ИНТЕРФЕЙСА 
Диалог выбора из справочника TRefDialog 
Этот компонент рекомендуется использовать в тех случаях, когда необходимо 
в процессе работы программы  вызвать стандартный диалог выбора из справочника
. 
 
  
    | Свойства Published | 
      | 
   
  
    | ClassButtons | 
    Свойство определяет множество элементов управления, которые будут доступны в 
справочнике. Имеет тип TRefQueryButtons | 
   
  
    | ClassTableName | 
    Название таблицы класса | 
   
  
    | NamesType | 
    Способ отображения:
ATTRIBUTES – поля справочника
SHORT
_NAME –краткие наименования объектов
Возможны и другие 
значения, если в конфигурации имеются дополнительные типы наименований объектов
. | 
   
  
    | Options | 
    Опции диалога. Имеет тип TRefSelectDlgOptions | 
   
  
    | RootRubric_ID | 
    Идентификатор корневой рубрики. Если значение этого свойства отлично от 
нуля – в окне диалога слева высвечивается дерево рубрик, 
начиная с этой рубрики. | 
   
  
    | SubClassButtons | 
    Свойство определяет множество элементов управления, которые будут доступны в 
подчиненном справочнике, если тот отображается. Имеет тип TRefQueryButtons | 
   
  
    | SubClassTableName | 
    Название таблицы починенного класса | 
   
  
    | Title | 
    Заголовок для окна диалога. | 
   
  
    | Transaction | 
    Транзакция | 
   
  
    | WindowOptions | 
    Оконные опции. Имеет тип TWindowOptions | 
   
 
 
  
    | Свойства Public | 
    тип | 
    readonly | 
      | 
   
  
    | Object_ID | 
    integer | 
    readonly | 
    ID элемента, выбранного из справочника. | 
   
  
    | SubObject_ID | 
    integer | 
    readonly | 
    ID элемента, выбранного из подчиненного справочника. | 
   
 
 
  
    | Методы | 
      | 
   
  
    | function Execute: boolean | 
    Вызывает диалог на экран. Возвращает True, если пользователь 
выбрал справочный элемент в диалоге и False, если он 
нажал кнопку «Отмена». | 
   
  
    | procedure CloseQueries | 
    Закрывает все открытые внутренние запросы. | 
   
 
 
Объявления некоторых типов данных, используемых в свойствах этого компонента 
показаны ниже: 
TRefSelectDlgOption  = (doValueRequired, doSubValueRequired, doShowSubmitted,
    doRestrictClass, doRestrictSubClass, doHideLookups, doHideSubLookups,
    doRelocateRecord, doUseWindowOptions);
TRefSelectDlgOptions = set of TRefSelectDlgOption;
{doValueRequired  - требуется выбрать значение в справочнике
 doSubValueRequired - требуется выбрать значение в подчиненном справочнике
 doShowSubmitted – показывать подчиненные справочники
 doRestrictClass – ограничить класс справочника (не отображать дочерние)
 doRestrictSubClass – ограничить класс подчиненного справочника (не отображать дочерние)
 doHideLookups – не высвечивать дополнительные поля в режиме отображения наименований
 doHideSubLookups - не высвечивать дополнительные поля подчиненного класса
 doRelocateRecord – осуществлять поиск «текущего» элемента при повторном открытии диалога
 doUseWindowOptions – использовать оконные опции
TRefQueryButton = (rqbInsert, rqbDelete, rqbEdit, rqbRefresh, rqbFilter, rqbSubmit, rqbNamesType);
TRefQueryButtons = set of TRefQueryButton;
{rqbInsert – отображать кнопку «Добавить»,
 rqbDelete – отображать кнопку «Удалить»,
 rqbEdit – отображать кнопку «Изменить»,
 rqbRefresh – отображать кнопку «Освежить»,
 rqbFilter – отображать кнопку «Фильтр»,
 rqbSubmit – отображать кнопку «Показывать подчиненные»,
 rqbNamesType – отображать селектор «Режим» (атрибуты, краткое наименование и т.п.)}
TWindowOptions = class(TPersistent)
public
  constructor Create;
published
  property Height: integer read FHeight write FHeight;
  property Width: integer read FWidth write FWidth;
  property Left: integer read FLeft write FLeft;
  property Top: integer read FTop write FTop;
  property Position: TPosition read FPosition write SetPosition;
end;
Использовать компонент TRefDialog несложно. Достаточно в Инспекторе объектов указать 
транзакцию и установить свойство ClassTableName, выбрав имя таблицы из 
выпадающего списка. Затем в программе следует вызвать метод Execute
, а затем прочитать значение  свойства Object_ID. 
Например, так: 
with RefDialog1 do
if Execute then
  ShowMessage(IntToStr(Object_ID));
 
Еще проще использовать оконные компоненты – селекторы объектов TRefEdit и 
TDBRefEdit, которые вызывают тот же диалог выбора из справочника
. 
 
 
               |