Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Record mit Objekt kopieren

  Alt 21. Mai 2007, 12:36
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat