Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Иллюстрированный самоучитель по Delphi 6 / Часть III. Компоненты и программы / Использование компонентов общего назначения / Компоненты страницы Additional /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


TValueListEditor - специализированный редактор строк - Программирование от RIN.RU
TValueListEditor - специализированный редактор строк

Этот компонент введен в версии 6 и предназначен для редактирования списков строк вида имя=значение. Такие списки широко используются в реестре Windows и файлах инициализации. Наконец. начиная с версии 5 Delphi по умолчанию в таком формате хранит файлы описания форм dfm. Если на пустую форму положить компонент TValueListEditor, диалог TOpenDialog и кнопку TBitBtn, то после загрузки в редактор файла Example. dfm (для учебной формы, описанной в гл. 5) получим экран, показанный на рис. 18.17. Обработчик нажатия кнопки имеет такой вид:


procedure TFormI.BitBtnIClick(Sender: TObject);
begin
if OpenDialogI.Execute then
ValueListEditorl.Strings.LoadFromFile(
OpenDialogI.FileName)
end;


Непосредственным предком компонента является класс TCustomDrawGrid, поэтому многие его свойства, методы и события совпадают с описанными в п. 18.2.4 свойствами, методами и событиями компонента TStringGrid.


Специфичные свойства компонента:
property Cells[ACol, ARow: Integer]: String;Открывает доступ к содержимому ячейки, лежащей на пересечении столбца ACol со строкой arow (нумерация столбцов и строк начинается с нуля)
property ColCount: Integer;Содержит количество столбцов
type TDisplayOption = (doColumnTitles, doAutoColResize, doKeyColFixed) ; TDisplayOptions = set of TDisplayOption;
property DisplayOptions: TDisplayOptions;
Свойство может включать следующие значения: doColumnTitles - первая строка содержит заголовки столбцов, определенные свойством TitleCaption, И не скроллируется; doAutoColResize - предписывает автоматически изменять ширину столбцов при изменении размеров компонента; doKeyColFixed - если указано, ширина первого столбца, содержащего имена, не меняется при изменении размеров
property DropDownRows: Integer;Указывает максимальное количество строк в списке возможных значении, показ которых не сопровождается появлением полосы прокрутки
property ItemProps[const KeyOrIndex: Variant]: TItemProp; Сложное свойство, управляющее различными аспектами отображения значений (см. пояснения ниже)
type TKeyOption = (keyEdit, keyAdd, keyDelete, keyUnique) ;
TKeyOptions = set of TDisplayOption;
property KeyOptions: TKeyOptions;
Управляет возможным изменением списка: keyEdit - пользователь может изменять имя параметра (в первом столбце); keyAdd - пользователь может добавлять новую пару имя-значение нажатием клавиши Insert (требует включения keyEdit); keyDelete -пользователь может уничтожить выделен ную пару нажатием клавиши Delete; keyUnique - названия вводимых пользователем имен должны быть уникальными
property Keys[Index: Integer]:String;Открывает доступ к названиям значений по их индексам
property RowCount: Integer;Содержит количество строк
property Strings: TStrings;Содержит строки списка
property TitleCaptions: TStrings;Содержит заголовки столбцов
property Values[const Key:String]: String;Открывает доступ к значениям по их индексам




Рис. 18.17. Демонстрация компонента TValueListEditor




Свойство itemprops класса Titemprop имеет собственные свойства:



property EditMask: String; Содержит маску для формирования значения. Правила создания маски описаны в п.18.2.3
type TEditStyle = (esSimple, esEllipsis, esPickList);
property EditStyle: TEditStyle;
Определяет правила редактирования значения: esSimple - значение редактируется в обычном однострочном редакторе; esEllipsis - в строку значения вставляется кнопка для вызова диалогового окна редактора значения (возбуждается событие OEditButtonclick); esPickList - в строку значения вставляется кнопка для раскрытия списка возможных значений (возбуждается событие OnGetPickList)
property MaxLength: Integer;Определяет максимальную длину (в символах) значения. Если 0, нет ограничений на длину
property PickList: TStrings; Содержит выпадающий список возможных значений
property Readonly: Boolean; Разрешает/запрещает редактирование значения



Свойство PickList не предназначено для программного доступа. Чтобы создать выпадающий список возможных значений, нужно свойству ItemProp.EditStyle присвоить значение esPickList и написать обработчик события onGetpickList. Пусть, например, первое значение должно иметь выпадающий список. Тогда необходим такой код:


procedure TFormI.FormActivate(Sender: TObject);
begin
ValueListEditorl.ItemProps[1].EditStyle := esPickList;
end;


procedure TFormI.ValueListEditorlGetPickList(Sender: TObject;
const KeyName: String;
Values: TStrings);
begin
// Содержимое списка доступно через параметр Values:
Values.Add('1') ;
Values.Add('2') ;
Values.Add ('3') ;
Values.Add('4') ;
end;


Следующие свойства компонента аналогичны одноименным cвойствам компонента TStringGrid (cm. П. 18.2.4): BorderStyle, Col, ColWidths, DefaultColWidth, DefaultDrawing, DefaultRowHeight, EditorMode, FixedColor, FixedCols, GridHeight, GridLineWidth, GridWidth, LeftCol, Options, Row, RowHeights, ScrollBars, Selection, TabStops, TopRow, VisibleColCount,VisibleRowCount. function InsertRow(const KeyName,. "."alue: String; Append: Boolean) : Integer-procedure Refresh; function RestoreCurrentRow: Boolean;


Методы CellRect, MouseToCell И MouseCoord аналогичны одноименным методам компонента TStringGrid (см. п. 18.2.4).


События компонента:
property OnEditButtonClick: TNotifyEvent;Возникает при щелчке по кнопке раскрытия диалогового окна редактирования значения. Свойство ItemProps .EditStyle должно содержать значение esEllipse
type TGetPickListEvent = procedure (Sender: TObject; const KeyName: String; Values: TStrings)of object;
property OnGetPickList: TGetPickListEvent; 
Возникает при щелчке по кнопке раскрытия списка возможных значений. Параметр KeyName содержит имя строки, в которой произведен щелчок. Обработчик должен заполнить возможными значениями список Values. Свойство ItemProps. EditStyle должно содержать значение esPickList
property OnStringsChange: TNotifyEvent;Возникает сразу после изменения имени или значения текущей строки
property OnStringsChanging: TNotifyEvent;Возникает непосредственно перед изменением имени или значения текущей строки
type TOnValidateEvent = procedure (Sender: TObjectACol, ARow: Longint; const KeyName, KeyValue:String) of object; property OnValidate: TOnValidateEvent;Возникает перед тем как фокус ввода покинет ячейку ACol, ARow. Обработчик может проверить новые значения KeyName и KeyValue и возбудить исключение, если исправления в строке были ошибочными



Следующие события аналогичны одноименным событиям компонента TStringGrid: OnDrawCell, OnGetEditMask, OnGetEditText OnRowMoved, OnSelectCell, OnSetEditText, OnTopLeftChanged.



 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь