2017-01-29 73 views
-1

我想添加一些字符串到一個ListView,但我不知道字符串可以多久。ListView麻煩添加項目和子項目

例如:

mystring := 'a'+|+'b'+|+ 'c'+|+ 'd'+|+ 'e'+|+ 'f'+|+ ....... '1000 of mystr'; 

我炸串後,我有:

'a' 
'b' 
'c' 
. 
. 
. 
'1000ofmystr' 

我想一個新的項目添加到ListView其中 'A' 是標題和「B '和'C'是子項目。

然後添加一個新項目,其中'D'是標題,'E'和'F'是子項目。

然後繼續像這樣整個字符串,即使它在爆炸數據中有數百萬個子字符串。

每三個子字符串都是一個ListView項目,直到字符串耗盡。

我不知道如何做到這一點,這就是爲什麼我在這裏問。我想要做的是這樣的畫面:

image

我需要的東西,這樣的代碼:

ListView1.Items.Add; 
ListView1.Caption:= StrArr[0]; // id of the book number one 
SubItems.Add(StrArr[1]); //its title 
SubItems.Add(StrArr[2]); // its editor 
ListView1.Items.Add; 
ListView1.Caption:= StrArr[3]; // id of the book number two 
SubItems.Add(StrArr[4]);  //its title 
SubItems.Add(StrArr[5]); // its editor 
ListView1.Items.Add; 
ListView1.Caption:= StrArr[6]; // id of the book number three 
// and so on for other books for an unknown number of strings 

請告訴我正確的代碼來做到這一點。

+0

所以,儘管寫的代碼。什麼阻止了你。 –

+0

好吧我不知道主人做那就是那爲什麼我問他這樣我想在圖片中做什麼https://s24.postimg.org/cry3s6hs5/Captussssssssre.png然後ListView1.Items.Add; ListView1.Caption:= StrArr [0];書號1 SubItems.Add(StrArr [1]); //其標題 SubItems.Add(StrArr [2]); //其編輯器 SubItems.Add(StrArr [3]);書號拖曳的編號 SubItems.Add(StrArr [4]); //其標題 SubItems.Add(StrArr [5]); //其編輯器 SubItems.Add(StrArr [6]); ///和其他書籍 UNTIL UNCKONOWN SubItems.Add(StrArr [100000000]); – Mario

+0

這不是我們在這裏。閱讀[help] –

回答

0

使用一個循環,例如:

var 
    Item: TListItem: 
    i: Item; 

for i := 0 to NumberOfStrings-1 do 
begin 
    if (i mod 3) = 0 then 
    begin 
    Item := ListView1.Items.Add; 
    Item.Caption := StrArr[i]; 
    end else 
    Item.SubItems.Add(StrArr[i]); 
end; 

做筆記,但是,在TListView顯示數千/數百萬的項目更好地工作,如果你在虛擬模式代替(使用它時,它的OwnerData屬性設置爲true)。其Items.Count屬性設置爲要顯示的項目數,然後利用其OnData事件只有它要求的項目,如提供字符串:

var 
    NewCount: Integer; 

NewCount := NumberOfStrings div 3; 
if (NumberOfStrings mod 3) <> 0 then 
    Inc(NewCount); 
ListView1.Items.Count := NewCount; 

... 

procedure TMyForm.ListView1Data(Sender: TObject; Item: TListItem); 
var 
    Index: Integer; 
begin 
    Index := Item.Index * 3; 
    Item.Caption := StrArr[Index]; 
    for Index := Index+1 to Index+2 do 
    begin 
    if Index < NumberOfStrings then 
     Item.SubItems.Add(StrArr[Index]) 
    else 
     Break; 
    end; 
end; 
+0

非常感謝。你的回答非常非常有幫助。問題解決了 – Mario