Einzelnen Beitrag anzeigen

daddy

Registriert seit: 9. Sep 2005
Ort: Köln
124 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Nevrona Rave und Printerfonts

  Alt 26. Sep 2007, 13:00
Für alle, die es interessiert:

Folgende Lösung für das Problem habe ich inzwischen selber entwickelt.
Ich arbeite im RaveDesigner bei allen Textfeldern, die einen Embedded Font zugewiesen bekommen sollen grundsätzlich mit FontMastern. Diese liegen direkt in Page1 und bekommen einen nach einem festen Schema aufgebauten Namen FontEmbedded_<Name>_<Size>, wobei <Name> der Name des gewünschten Embedded Printerfonts ist und <Size> die zugehörige gewünschte Größe. Im Programm mache ich dann nach dem Open meiner TRvObject-Instanz einen Aufruf an meine unten aufgelistete Prozedur "ChangeRaveFonts". In dieser werden alle Child-Objekte in Page1 gesucht. Es wird geprüft, ob es Objekte des Typs TRaveFontMaster sind und wenn ja, ob ihr Name mit dem Text "EmbeddedFonts_" beginnt. Falls ja, werden Schriftart und Schriftgröße ausgetauscht.

Gruß Daddy

Delphi-Quellcode:
procedure ChangeRaveFonts(RpName: String);
var RP : TRavePage;
    C : TComponent;
    I : Integer;
    T : String;
begin
  RP := TRavePage(RvMain.ProjMan.FindRaveComponent(RpName + '.Page1', NIL));
  if RP <> NIL then
  begin
    for I := 0 to RP.ChildCount do
    begin
      // Ist das Objekt ein Fontmaster?
      if RP.Child[I] is TRaveFontMaster then
      with TRaveFontMaster(RP.Child[I]) do
      begin
        // Beginnt sein Name mit "FontEmbedded_"?
        if SameText(Copy(Name, 1, 13), 'FontEmbedded_') then
        begin
          // Neue Schriftart zuweisen
          T := Copy(Name, 14, 99);
          T := Copy(T, 1, Pos('_', T) - 1);
          Font.Name := T;
          // Neue Schriftgröße zuweisen (Default = 10)
          T := Copy(T, Pos('_', T) + 1, 99);
          Font.Size := StrToIntDef(T, 10);
        end;
      end;
    end;
  end;
end;
  Mit Zitat antworten Zitat