Ich habe einen Record:
Delphi-Quellcode:
type
TTextObjectData = packed record
Text: string;
Font: TFont;
TextAlignment: TAlignment;
IsPageHeader: Boolean;
IsLeftPage: Boolean;
HeaderAlignment: TPageHeaderAlignment;
end;
Wie man sieht beinhaltet er ein TFont-Objekt:
Delphi-Quellcode:
procedure TFotoBook.PageHeaders(Show: Boolean);
var
i : Integer;
Page : TImageEnVect;
TempFont : TFont;
TempPageHeaderData: TTextObjectData;
begin
// Seitenköpfe anlegen, wenn noch nicht vorhanden
if Show and not HasPageHeaders then
begin
for i := 0 to FPageCollection.Count - 1 do
begin
Page := FPageCollection.Items[i];
if not HasPageHeaders then
begin
TempPageHeaderData.Text := 'Kopfzeile';
TempFont := TFont.Create;
try
TempFont.Name := 'Tahoma';
TempFont.Size := -10;
TempFont.Color := clBlack;
TempFont.Style := [];
TempPageHeaderData.Font := TempFont;
finally
TempFont.Free;
end;
TempPageHeaderData.HeaderAlignment := haCenter;
end;
// Kopfzeileneigenschaften sichern
PageHeaderData := TempPageHeaderData;
AddPageHeader(Page, PageHeaderData);
end;
end
else if not Show and HasPageHeaders then
begin
for i := 0 to FPageCollection.Count - 1 do
begin
Page := FPageCollection.Items[i];
RemovePageHeader(Page);
end;
end;
HasPageHeaders := Show;
end;
Jetzt wollte ich den lokalen Record
TempPageHeaderData in dem (klassen)globalen Record
PageHeaderdata sichern zur späteren Verwendung. Das Problem ist, dass das Font-Objekt natürlich wieder freigegeben wird, so dass das Font-Objekt im globalen Record ungültig wird, da es ja nur ein Zeiger ist.
Meine Frage jetzt: Wie kann ich den Record kopieren und dabei das Objekt nicht verlieren?