簡體   English   中英

有沒有辦法將此delphi代碼轉換為c ++ builder

[英]Is there a way to convert this delphi code to c++builder

在大多數情況下,我能夠將Delphi轉換為C ++,但這使我有些頭痛。 也許有些人可以幫忙。

可以看出在這個環節在這里 ,它引用上的TListView在Embarcadero公司(FMX)一些新的功能。 因為我對C ++的了解比對Delphi的了解要多得多,所以我使用C ++ Builder。 在大多數情況下,翻譯和理解並找到解決方法是完全可以的。 但是在這里我被困住了:

procedure TForm1.FormCreate(Sender: TObject);
I: Integer;
begin
// ListView1 uses a classic Appearance
for I in [0..63] do
with ListView1.Items.Add do
begin
  Text := Format('%d pages', [1000 + Random(1234567)]);
  Detail := Format('%d kg of paper', [1000 + Random(1234)]);
  ImageIndex := Random(ImageList1.Count);
end;

// ListView4 uses a dynamic appearance with items named
// Text1, Detail1, Portrait
for I in [0..63] do
with ListView4.Items.Add do
begin
  Data['Text1'] := Format('%d pages', [1000 + Random(1234567)]);
  Data['Detail1'] := Format('%d kg of paper', [1000 + Random(1234)]);
  Data['Portrait'] := Random(ImageList1.Count);
end;
end;

end. 

我正在努力的部分是

with ListView4.Items.Add do
begin
  Data['Text1'] := Format('%d pages', [1000 + Random(1234567)]);
  Data['Detail1'] := Format('%d kg of paper', [1000 + Random(1234)]);
  Data['Portrait'] := Random(ImageList1.Count);
end;

它是如何翻譯的,或者是c ++中根本不存在的功能?

With樣的介紹一位不願透露姓名的變量,並為它的范圍。 在C ++中,您必須明確。 Delphi片段相當於

var
  li: TListItem;
begin
  li := ListView4.Items.Add;
  li.Data['Text1'] := Format('%d pages', [1000 + Random(1234567)]);
  li.Data['Detail1'] := Format('%d kg of paper', [1000 + Random(1234)]);
  li.Data['Portrait'] := Random(ImageList1.Count);
end;

(如果我沒有弄亂:-))。

當您要將項目添加到ListView時,首先需要使用Add()函數創建項目對象(TListViewItem *),該函數是TListView的Items屬性的子級。 然后,item的Data屬性需要TValue,因此您需要從字符串或要放入該項目的其他內容中獲取TValue。 請記住在片段之前使用BeginUpdate(),在片段添加元素后將其添加到ListView和EndUpdate(),以提高此操作的性能。

ListView4->BeginUpdate();

TListViewItem* item = ListView4->Items->Add();
UnicodeString string1 = "content of the String";

item->Data["Text1"] =  TValue::From<UnicodeString>(string1);
item->Data["Detail1"] = TValue::From<UnicodeString>(string1); 
item->Data["visitTime"] =TValue::From<int>(Random(ImageList1->Count)) 

ListView4->EndUpdate();

嘗試這樣的事情:

// Never use the OnCreate event in C++,
// use the class constructor instead...
__fastcall TForm1::TForm1(TComponent *Owner)
    : TForm(Owner)
{
    // ListView1 uses a classic Appearance
    for(int i = 0; i < 64; ++i)
    {
        TListViewItem *Item = ListView1->Items->Add();
        Item->Text = Format(L"%d pages", ARRAYOFCONST(( 1000 + Random(1234567) )) );
        Item->Detail = Format(L"%d kg of paper", ARRAYOFCONST(( 1000 + Random(1234) )) );
        Item->ImageIndex = Random(ImageList1->Count);
    }

    // ListView4 uses a dynamic appearance with items named
    // Text1, Detail1, Portrait
    for(int i = 0; i < 64; ++i)
    {
        TListViewItem *Item = ListView4->Items->Add();
        Item->Data[L"Text1"] = Format(L"%d pages", ARRAYOFCONST(( 1000 + Random(1234567) )) );
        Item->Data[L"Detail1"] = Format(L"%d kg of paper", ARRAYOFCONST(( 1000 + Random(1234) )) );
        Item->Data[L"Portrait"] = Random(ImageList1->Count);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM