Einzelnen Beitrag anzeigen

Niotronic

Registriert seit: 5. Okt 2010
Ort: Graz
7 Beiträge
 
Delphi 2010 Architect
 
#1

TImage wird bei Zugriff auf Height /Width gelöscht ?

  Alt 2. Nov 2013, 15:25
Hallo,

ich arbeite gerade an eine Prozedur, welche über einen Stream eine Bilddatei (bmp, jpeg, png, etc.) aus dem Blobfeld einer datenbanktabelle liest, dann das Grafikformat bestimmt, damit das entsprechende TGraphic Objekt erstellt, die Bilddatei aus dem Stream in das TGraphic lädt und anschließend einem TImage zur Anzeige zuweist. Funktioniert tadellos, solange NACH der Zuweisung die Zeile "LBSizeValue.Caption:=inttostr(SitePlanImage.Pictu re.BitMap.Width)+' x '+inttostr(SitePlanImage.Picture.Bitmap.Height); ", welche eigentlich nur auf Höhe und Breite der Bitmap zugreift !! NICHT !! aufgerufen wird. Mit anderen Worten diese Zeile (am Ende der untenstehenden Prozedur) löscht offenbar das TImage (bzw. Bitmap) wieder...
Bin im Moment ratlos...

Danke schon mal für eure Vorschläge!

Gruß,

Klaus

procedure TFSitePlanImageEditor.ShowSitePlan(SitePlanName: string);
var LastCursor: TCursor;
AStream: TMemoryStream;
GraphicClass: TGraphicClass;
Graphic: TGraphic;
begin
LastCursor:=Screen.Cursor;
Screen.Cursor:=crHourglass;
AStream:=TMemoryStream.Create;
try
DataBase.ReadSitePlan(SitePlanName, AStream);
if not FindGraphicClass(AStream.Memory^, AStream.Size, GraphicClass) then
raise EInvalidGraphic.Create('Invalid graphic format');
Graphic := GraphicClass.Create;
AStream.Position := 0;
Graphic.LoadFromStream(AStream);

SitePlanImage.Picture.Assign(Graphic);

finally
AStream.Free;
Graphic.Free;
end;
Screen.Cursor:=LastCursor;

//************* Diese Zeile löscht das Image wieder ???
//LBSizeValue.Caption:=inttostr(SitePlanImage.Pictur e.BitMap.Width)+' x '+inttostr(SitePlanImage.Picture.Bitmap.Height); //this clears the image ????????????????????
//**************
end;
Klaus
  Mit Zitat antworten Zitat