2

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 に画像を割り当てる適切な方法は何ですか?

ありがとう -バリー

4

1 に答える 1