Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.095 Beiträge
 
Delphi 12 Athens
 
#1

Fmx ListBox Darstellungsfehler als Tile

  Alt 9. Jul 2015, 16:20
Hallo zusammen,

ich möchte unter RadXE8 Upd1 mit Firemonkey die ListBox nutzen, mit Images aus einer ImageList
in einem separatem DatenModul.

Weil das im Orginal ein viel zu kleines Bild zeigt (ala 16x16 Icon), habe ich es mit
Code:
procedure TForm1.ListBoxItem1ApplyStyleLookup(Sender: TObject);
versucht.

Ich habe auch Versuche mit Styles gemacht, aber das führt bei mir zu anderen Problemen.
Deshalb würde ich gerne einfach folgendes hinbekommen:
ImageList --> ListBox --> ItemIndex --> linksbündiges Bild in max. Höhe

Code:
function Styles_Apply_Get(obj : TListBoxItem;
                             var sTxt : TText; var sDet : TText; var sImg : TGlyph) : Boolean;
var
  fmxImg : TFmxObject;
  fmxTxt : TFmxObject;
  fmxDet: TFmxObject;

begin
  Result := False;
  sTxt  := nil;
  sDet  := nil;
  sImg  := nil;

  if not Assigned(obj) then
    Exit;

  if (obj is TListBoxItem) then
  begin

    fmxTxt := (obj as TListBoxItem).FindStyleResource('text');
    fmxDet := (obj as TListBoxItem).FindStyleResource('accessorydetail');
    fmxImg := (obj as TListBoxItem).FindStyleResource('glyphstyle');


    if Assigned(fmxImg) and (fmxImg is TGlyph) then
    begin
      sImg := fmxImg as TGlyph;

      sImg.Align  := TAlignLayout.MostLeft;
      Result := True;
    end;


  end;

end;


  if Styles_Apply_Get(Sender as TListBoxItem,
                      sTxt, sDet, sImg) then
  begin
    sImg.HitTest     := False;

    rc := sImg.BoundsRect;
    rc.Width := (Sender as TListBoxItem).Height -1;
    rc.Height := (Sender as TListBoxItem).Height -1;
    sImg.SetBounds(rc.Left, rc.Top, rc.Right, rc.Bottom );

  end;

Damit kann ich mir den 'GlyphStyle' als TGlyph holen und die Größe etwas anpassen an die ListBoxItem Höhe.
Soweit so gut.

Das Problem:
Es sieht auf den mobilen Platformen anders aus als geplant, mit Tiles statt einem ge-stretch-tem Bild.
Auf Win/Mac ist es so wie gedacht, Ios/Android nicht.
Habe schon mit Retina Scaleing, etc.herumgespielt, ich komme aber nicht drauf wie man das abstellen kann.

Im Anhang Bilder der Platformen und Sources für ein kleines Demo.

Vielleicht ist ListBoxItem1ApplyStyleLookup je der falsche Weg ?

Rollo
Miniaturansicht angehängter Grafiken
clipboard01_win.jpg   clipboard02_mac.jpg   clipboard03_ios.jpg   clipboard04_and.jpg  
Angehängte Dateien
Dateityp: zip T11_ListBox.zip (4,47 MB, 6x aufgerufen)
  Mit Zitat antworten Zitat