2009-08-21 3 views
2

編集:下部に更新:TComboBoxExランタイムに読み込まれたアイテムはインデントされません。

誰かがここで私を助けてくれることを願っています。

のDelphi 2009

私は上の2つの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; 

私はそれを用いた設計時に移入他に、実行時に移入

つのフォームを持っています同じプロパティを設定することができます。

私が実行時に入力したものは、まったくインデントされていませんが、デザインタイムのものはうまくインデントされています。

アイデア?ヘルプでは、identはインデントするピクセル数ですが、インデントが1に設定されていても、デザイン時間は1ピクセル以上インデントされます。

たとえば、上記のコードでインデントを10に設定すると、無効。ここで

はキャプションとインデントの後にコンボ項目のDataプロパティを設定し、設計時間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 

更新

のためのDFMのセクションでは、それが仕事を得るように思われます。

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; 

少し奇妙です。

+0

私があなただったらQCに報告したいと思います。 –

+0

そうだと思います – Jamie

答えて

1

あなたのコードが動作しない理由はないかなり確実ではなく、ここにないものもあります:

for N := 0 to 5 do 
    cb1.ItemsEx.AddItem(intToStr(N), 0, 0, 0, DESIRED_INDENT_LEVEL, nil); 
+0

ありがとうございました。私の更新を見る – Jamie

0

設定キャプションの前にインデントプロパティを設定してみてください。 TComboBoxExの「既知のバグ」と思われます。

関連する問題