Einzelnen Beitrag anzeigen

Rollo62

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

[Fmx] TBitmap in TValue speichern

  Alt 8. Apr 2016, 10:13
Hallo zusammen,

ist das möglich, so das es eine DeepCopy ist und nicht nur als Pointer gespeichert wird ?

Ich möchte TBitmap in einem TValue speicern, so das es später als Bitmapfeld in z.B. ein TImage verwendet werden kann.

Hier habe ich mal dazu gefunden, aber leider nichts zu TBitmap.
http://robstechcorner.blogspot.de/20...-in-depth.html
http://delphi.cjcsoft.net/viewthread.php?tid=43255


Das hier alles hat zumindest nicht funktioniert:
Delphi-Quellcode:
var
  MStrm: TMemoryStream;
  valPic: TValue;
  bmpCopy: TBitmap;


      // Via Variant - kopiert ByteArray, aber das wird natürlich später nicht als Bmp gelesen
      BMPToVariant(bmpCopy, varPic);

      valPic := TValue.From<Variant>(varPic);
      sTest := valPic.ToString;

      // Mit expliziter Angabe - es wird nur der Pointer kopiert
      valPic := TValue.From<TBitmap>(bmpCopy);
      sTest := valPic.ToString;


      // Mit Make - es wird nur der Pointer kopiert
      TValue.Make(@bmpCopy, TypeInfo(TBitmap), valPic);
      sTest := valPic.ToString;


      // So wie es sein sollte - es wird nur der Pointer kopiert
      valPic := TValue.From(bmpCopy);
      sTest := valPic.ToString;

      // Hier soll es rein und sich wie ein normales Bitmapfeld benehmen
      // und per LiveBinding im Image angezeigt werden
      DataGeneratorAdapter1.Fields[4].SetTValue( valPic );

      // Beim ersten Anlegen ist das Bitmap auch da !!!
      // Aber Scroll oder Refresh vernichten es, und es bleibt leer
      //
      // bmpCopy lösche ich übrigen NICHT nach dem Setzen, also sollte auch ein Pointer im DataGeneratorAdapter1
      // mitgeführt werden und ausreichend sein, oder nicht ?

Hat damit schonmal jemand gearbeitet ?


Rollo
  Mit Zitat antworten Zitat