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