Delphi-Quellcode:
TJvCustomInspectorData.ItemRegister.
Add(TJvInspectorTypeInfoRegItem.Create(TJvInspectorPictureItem ,
TypeInfo(TPicture)));
Du setzt hier den Editor für den Typ
TPicture
Und hier verwendest du ein cast auf TPngObject:
Delphi-Quellcode:
function TJvInspectorPngImage.GetDisplayValue: string;
begin
if TPngObject(Pointer(Data.AsOrdinal)).Empty then <--- da müsste es krachen
{ ... }
end;
Diese Zeile müsste lauten:
if TPicture(Pointer(Data.AsOrdinal)).Graphic.Empty then
So, du kannst ja über den Cast schließlich auf die TPicture-Klasse zugreifen. Warum machst du das dann auch nicht hier:
Delphi-Quellcode:
procedure TJvInspectorPngImage.Edit;
begin
{ ... }
if MainForm.dlgPicture.Execute then
begin
TPicture(Pointer(Data.AsOrdinal)).LoadFromFile(PngImageFile);
end;
{ ... }
end;
Dann brauchst du auch das
tmpPngImage nicht mehr.
Und mit dem abstakten Fehler: erstell mal ein Editor für die "Margins" - musst ja nichts großes machen - einfach nur mal schauen, ob sich dadurch das Problem löst