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