Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#1

Unterschiedliches verhalten (FMX) Rendern von Childcontrols

  Alt 12. Nov 2013, 15:57
OK. Mir ist kein besserer Titel eingefallen.

Man nehme eine Scrollbox.
Auf diese Scrollbox wir ein TRectangle erzeugt.
Auf diese TRectangle sollen 1..n Images erzeugt werden, die Text und Grafiken enthalten.

Unter Win32 funktioniert das so...
Delphi-Quellcode:
MyRect := TRectangle.Create(Scollbox1);
MyRect.Parent := Scrollbox1;
MyRect.Width := 768;
MyRect.Height := 0; // !!
MyRect.Position.X := 0;
MyRect.Position.Y := NextYPos;

IMG := TImage.Create(MyRect);
IMG.Parent := MyRect;
IMG.Position.X := LeftFromDatenbank;
IMG.Position.Y := TopFromDatenbank;
MakeBMPInhalt(bla bla bla); // Setzt nach der Berechnung auch die Höhe des Images

if MyRect.Height < IMG.Position.Y+IMG.Height then
  MyRect.Height := IMG.Position.Y+IMG.Height+2;
Unter iOS sind die Positionen des IMG absolut durcheinander.
Und alles ist zu klein, da die doppelte Retina Auflösung nicht berücksichtig wird. Das könnte man ja noch ändern...

Wenn man aber:
Delphi-Quellcode:
IMG := TImage.Create(MyRect);
MakeBMPInhalt(bla bla bla); // Setzt nach der Berechnung auch die Höhe des Images

if MyRect.Height < IMG.Position.Y+IMG.Height then
  MyRect.Height := IMG.Position.Y+IMG.Height+2;

IMG.Parent := MyRect;
IMG.Position.X := LeftFromDatenbank;
IMG.Position.Y := TopFromDatenbank;
Und schon stimmen alle Koordinaten und beim "IMG.Parent" wird die Grafik gemäß Retina Auflösung skaliert!!! Macht alles unscharf.

Jetzt stehe ich vor dem Huhn/Ei Problem. Ich kann die Höhe des TRectangle nicht vorher setzen, da die erst berechnet werden muss... Ich muss aber das IMG vorher zuweisen, damit im nachhinein nicht eine Skalierung durchgeführt wird...

Ich werde weiter testen...

Mavarik
  Mit Zitat antworten Zitat