FAQ VCL
Компоненты\ValueListEditor

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как изменить количество колонок в TValueListEditor?

procedure TForm1.Button1Click(Sender: TObject);
begin
   // Особого смысла в этом нет, так как
   // значение для всех колонок будет одно
   ValueListEditor1.ColCount := 3;
   ValueListEditor1.TitleCaptions.Text :=
      'Ключ'#13'Значение'#13'Что-то ещё';
end;


Как зафиксировать колонку в TValueListEditor?

procedure TForm1.FormCreate(Sender: TObject);
begin
   // Имеет смысл при ColCount > 2
   ValueListEditor1.FixedCols := 1;
end;


Как вставить в TValueListEditor раскрывающийся список с возможными значениями?

procedure TForm1.FormCreate(Sender: TObject);
begin
   ValueListEditor1.InsertRow('Ключ', '', True);
   ValueListEditor1.ItemProps[0].ReadOnly := True;
   ValueListEditor1.ItemProps[0].EditStyle := esPickList;
end;

procedure TForm1.ValueListEditor1GetPickList(Sender: TObject;
  const KeyName: string; Values: TStrings);
begin
   Values.Add('Значение 1');
   Values.Add('Значение 2');
end;


Как вызвать в TValueListEditor диалоговое окно для редактирования значения?

procedure TForm1.FormCreate(Sender: TObject);
begin
   ValueListEditor1.InsertRow('1', '', True);
   ValueListEditor1.ItemProps[0].ReadOnly := True;
   ValueListEditor1.ItemProps[0].EditStyle := esEllipsis;
end;

procedure TForm1.ValueListEditor1EditButtonClick(Sender: TObject);
begin
   ValueListEditor1.Strings.ValueFromIndex[ValueListEditor1.Row-1] :=
     InputBox('Редактирование значения', 'Введите новое значение',
              ValueListEditor1.Strings.ValueFromIndex[ValueListEditor1.Row-1]);
end;


Как использовать разные редакторы в TValueListEditor с несколькими колонками?

uses
  {...,} Vcl.Grids;

type
  TValueListEditor = class({Vcl.}ValEdit.TValueListEditor)
  protected
    function GetEditStyle(ACol: Integer; ARow: Integer): TEditStyle; override;
    function CreateEditor: TInplaceEdit; override;
  private
    procedure GetCbxItems(ACol, ARow: Integer; Items: TStrings);
    procedure GetValue(Sender: TObject);
  end;

  TForm1 = class(TForm)
    ValueListEditor1: TValueListEditor;
    procedure FormCreate(Sender: TObject);
    {...}
  end;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
   // Особого смысла в этом нет, так как
   // значение для всех колонок будет одно
   ValueListEditor1.ColCount := 3;
   ValueListEditor1.TitleCaptions.Text :=
      'Ключ'#13'Значение (из списка)'#13'Значение (из редактора)';
end;

{ TValueListEditor }

function TValueListEditor.CreateEditor: TInplaceEdit;
var
  Inplace: TInplaceEditList;
begin
   Inplace := TInplaceEditList.Create(Self);
   Inplace.DropDownRows := 5;
   Inplace.OnGetPickListitems := GetCbxItems;
   Inplace.OnEditButtonClick := GetValue;
   Result := Inplace;
end;

function TValueListEditor.GetEditStyle(ACol, ARow: Integer): TEditStyle;
begin
   case ACol of
      1: Result := esPickList;
      2: Result := esEllipsis;
   else
      Result := esSimple;
   end;
end;

procedure TValueListEditor.GetValue(Sender: TObject);
begin
   with Sender as TValueListEditor do
      Strings.ValueFromIndex[Row-1] :=
         InputBox('Редактирование значения', 'Введите новое значение',
              Strings.ValueFromIndex[Row-1]);

end;

procedure TValueListEditor.GetCbxItems(ACol, ARow: Integer;
  Items: TStrings);
var
  i: Integer;
begin
   for i := 0 to 10 do
      Items.Add(IntToStr(i*100));
end;

При использовании материала - ссылка на сайт обязательна