2016-09-27 4 views
0

TListViewをより動的にする努力を歓迎していて、LiveBindings DesignerのTListViewプロパティにimageindexを単にリンクできるSarina Duponts投稿here 、DynamicAppearanceとTImageObjectAppearanceを使用しているときは、datafield(整数)へのimageプロパティまでです。TFMLemTableでLiveBindingsDesignerを使用しているときにTListView DynamicAppearanceに画像が表示されない

しかし...私は試して、ほぼ成功しました。

私の挑戦では、TFDMemTableにTREST *関数を使用してTFDMemTableを使用するアプリケーションがあります。 DynamicAppearanceを使用せず、ImageListItemを使用し、使用するデータフィールドを、LiveBindings Designerを使用してTListViewのimageindexプロパティにリンクすると、すべて正常に機能します。

DynamicApperanceでは、リンク先のimageindexプロパティはありませんが、ここでは整数フィールドを直接画像プロパティにリンクすることができます(IDE /コンパイラはそれを理解します)。

まあ...私は次のように考えました:私のデータフィールド(TREST *とTFDMemTableから半完成)は、必然的にそうではありません。私はREST/JSONを使用しているので、FieldTypeはWideStringに対して「匿名化」されていますが、FieldDefs - > 'dataitem' - > DataTypeは「ftWideString」に設定されています。私はこの値をftIntegerに変更しようとしましたが、これが役に立ちそうですが、私はちょうどこのエラーメッセージを受け取りました: "FDMemTTable1: 'datafield'フィールドの型不一致、exepecting:WideString actual:Integer。

だから... ...私はほとんどがあった、と私は本当にDynamicAppearanceを使用し、各TListViewItemのためのいくつかの画像やテキストフィールドを表示したい...

...またはそれが簡単のListViewItem「テンプレート」を作ることです動的にデータを取り込み、そのための最良の方法は何ですか?

答えて

1

通常、私はLiveBindingを避けようとしています。最も速く、最も安定した、最も簡単な方法は、コードを使用して項目を追加することです。

ListView1->BeginUpdate(); 

try { 
    for (int i = 0; i < arrayOfThings->item.Length; i++) { 
     TListViewItem* item = ListView1->Items->Add(); 

     item->Text = arrayOfThings->item[i]->item_name; 
     item->Data["itemName"] = TValue::From<UnicodeString>(arrayOfThings->item[i]->item_name); 
     item->Data["itemId"]  = TValue::From<UnicodeString>(IntToStr(arrayOfThings->item[i]->id)); 
     item->Data["itemDate"]  = TValue::From<UnicodeString>(arrayOfThings->item[i]->item_date); 
// adding the image - imgClock is name of the image field [TImageObjectAppearance ] added to items in ItemAppearance in the TListView object that uses DynamicAppereance 
     const UnicodeString imgClock = L"imgClock"; 
     dynamic_cast<TListItemImage*>(item->Objects->FindDrawable(imgClock))->Bitmap = //bitmap source; 
    } 
} catch (...) { 

} 
ListView1->EndUpdate(); 
+0

これはLiveBindingsよりも遅くなりませんか? –

+0

あなたはパフォーマンスの方が遅いのですか?私はもう複雑なテストをしていませんが、WindowsとAndroidの両方で私のメソッドを使うと、アプリケーションのパフォーマンスは素晴らしいです。コードを書くために必要な時間の意味が遅いということを意味するなら、私がコード内で行うことはより速いです。私はLiveBindingsの動作がどのように過度に時​​間がかかり、いつでも試してみると、あなたのような問題が数多く起こった。 –

+0

プログラミング速度ではなく実行速度です。私はtheese図書館に多くのオーバーヘッドがないことを願っています... –

関連する問題