Элементы TComboBoxEx не имеют отступа при заполнении во время выполнения - PullRequest
2 голосов
/ 21 августа 2009

Редактировать: Обновить внизу.

Надеюсь, что кто-то может помочь здесь, поскольку он ведет меня за поворот!

Delphi 2009

У меня есть форма с двумя компонентами TComboxBoxEx на ней

Один, который я заполняю во время выполнения следующим кодом

procedure TForm1.btn1Click(Sender: TObject);
var
  N: Integer;
begin
  cb1.ItemsEx.Add.Caption := 'Test';
  for N := 0 to 5 do
    with cb1.ItemsEx.Add do
    begin
      Caption := 'Item ' + IntToStr(N);
      Indent := 1;
    end;
 end;

Другой я заполняю во время разработки, используя те же данные и устанавливая те же свойства.

Элементы в том, что я заполняю во время выполнения, вообще не имеют отступов, в то время как время проектирования у них просто отлично.

Есть идеи? В справке говорится, что идентификатор - это количество пикселей, для которого нужно сделать отступ, но время разработки затрачивается на более чем один пиксель, даже если для отступа задано значение 1.

Установка отступа в 10, например, в приведенном выше коде не имеет никакого эффекта.

Вот раздел DFM для времени проектирования comobo

object cb2: TComboBoxEx
Left = 184
Top = 8
Width = 145
Height = 22
ItemsEx = <
  item
    Caption = 'Test'
  end
  item
    Caption = 'Item 0'
    Indent = 1
  end
  item
    Caption = 'Item 1'
    Indent = 1
  end
  item
    Caption = 'Item 2'
    Indent = 1
  end
  item
    Caption = 'Item 3'
    Indent = 1
  end
  item
    Caption = 'Item 4'
    Indent = 1
  end
  item
    Caption = 'Item 5'
    Indent = 1
  end>
ItemHeight = 16
TabOrder = 2
Text = 'cb1'
end

Обновление

Задание свойства Data для комбинированного элемента после заголовка и отступа заставляет его работать.

procedure TForm1.btn1Click(Sender: TObject);
var
  N: Integer;
begin
  cb1.ItemsEx.Add.Caption := 'Test';
  for N := 0 to 5 do
    with cb1.ItemsEx.Add do
    begin
      Caption := 'Item ' + IntToStr(N);
      Indent := 1;
      Data := Pointer(N);  // New Line
    end;
 end;

Все немного странно.

Ответы [ 2 ]

1 голос
/ 21 августа 2009

Не совсем уверен, почему ваш код не работает, но вот некоторые из них:

for N := 0 to 5 do
   cb1.ItemsEx.AddItem(intToStr(N), 0, 0, 0, DESIRED_INDENT_LEVEL, nil);
0 голосов
/ 09 октября 2009

Попробуйте установить свойство Отступ до Настройка заголовка. Кажется, это «известная ошибка» в TComboBoxEx.

...