Windows をマスター ビューとして使用して、Delphi 10.1 ベルリンでアプリを作成しました。フォームに TListView をドロップし、新しいデザイン モードの切り替えを使用してカスタマイズしました。TImageObjectAppearance といくつかの TTextObjectAppearance 項目を追加しました。TImageObjectAppearance の画像を設定するコードを追加し、テキスト項目にさまざまなフォント サイズとスタイルを設定しました。また、値に基づいて TImageObjectAppearance.Bitmap に割り当てるために使用するフォームに 3 つの TImage コンポーネントがあります。
Win32 用にコンパイルして実行すると、すべてが見栄えがします。ビットマップ イメージは、TListView の各行の値に基づいて表示されます。スタイルを Android に、ビューを Android 10 インチ タブレットに切り替えると、IDE は次のエラーをスローします。
「TAppearanceObjectItem を TAppearanceObjectItem に割り当てることはできません。」
ビューにはまだ Android 10" Tablet と表示されていますが、フォームの実際のビューはまだ Windows フォームです。最初の質問は、エラーの原因は一体何なのかということです。Delphi は、これらすべての異なるターゲットにコンパイルできるはずだと思っていました。 /devices が同じコードを使用している.そんなことは絶対にありません.しかし、待ってください.他にもあります...
そこで、Style: Windows と View: Master に戻しました。フォームの TImageObjectAppearance 項目をクリックして Delete キーを押したところ、次のエラーが発生しました。
「デザイナーから永続的な参照を削除できません。」
ただし、構造ウィンドウで項目をクリックして Delete キーを押すと、問題なく削除されます。バグ?私はそう言うでしょう。とにかく、もっとあります。Structure ウィンドウから TImageObjectAppearance 項目を削除してから、Style: Android および View: Android 10" Tablet に切り替えたところ、同じエラーが発生しました。しかし、フォームに TImageObjectAppearance がありません!そのため、Windows | マスター ビューの TListView カスタム アイテムを完全に削除し、Android 10 インチ タブレット ビューを使用して新たに開始します。TImageObjectAppearnce を含むすべてのカスタム外観オブジェクトを追加しますが、10 インチの Android タブレット用にコンパイルして Galaxy Tab S2 で実行すると、1) 画像が表示されません。画像を設定するために私が書いたコードを次に示します。 TImageObjectAppearance 項目に使用するフォーム上の 3 つの TImage コンポーネントです。
function TdmVisual.AddOrUpdateItem(AItem: TListViewItem; AMGDL: Integer): TListViewItem;
var
LObject: TListItemImage;
begin
Result := AItem;
LObject := Result.Objects.FindObjectT<TListItemImage>('imgRating');
LObject.Bitmap := TBitmap.Create;
if AMGDL < 70 then
LObject.Bitmap.Assign(fmMain.iLow.Bitmap)
else if (AMGDL >= 70) and (AMGDL <= 130) then
LObject.Bitmap.Assign(fmMain.iGreen.Bitmap)
else if (AMGDL > 130) and (AMGDL <= 180) then
LObject.Bitmap.Assign(fmMain.iYellow.Bitmap)
else
LObject.Bitmap.Assign(fmMain.iRed.Bitmap);
end;
私の 2 番目 (3 番目または 4 番目) の質問は、Android 用にコンパイルするときに上記のコードが機能しない理由と、コードで TImageObjectAppearance に画像を割り当てる適切な方法は何ですか?
ありがとう -バリー