![]() |
Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Hallo,
möchte gerne beim Ausdruck mit Fastreport, eine Variable, die verschiedene Anzahl von Zeichen enhalten kann aber das Feld eine konst. Grösse hat, die Fontgrösse ändern, damit die Zeichen in dieses Feld passen. Mein Versuch:
Delphi-Quellcode:
ändert nichts.
procedure Doppel7OnBeforePrint(Sender: TfrxComponent);
begin if Length(Doppel7) > 10 then Doppel7.Font.Size := 8 else Doppel7.Font.Size := 10; end; Die nächste Routine macht Fehler beim Aufruf.
Delphi-Quellcode:
"Doppel7" ist die entsprechende Variable. Die Übergabe des Inhaltes funktioniert. Formatierung jedoch nicht.
procedure Doppel7OnBeforePrint(Sender: TfrxComponent);
begin if Length(<frxReportAufstellung."Doppel7">) > 10 then // Doppel7.Font.Size := 8 <frxReportAufstellung."Doppel7">.Font.Size := 8 else // Doppel7.Font.Size := 10; <frxReportAufstellung."Doppel7">.Font.Size := 10; end; Gruß, Luckner |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Meinst du vielleicht "if Length(Doppel7.Value) > 10 then ..."
|
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Jetzt habe ich es so geändert.
Delphi-Quellcode:
Keine Fehler, jedoch auch keine Änderung der Schrift.
procedure Doppel7OnBeforePrint(Sender: TfrxComponent);
begin if Length(Doppel7.Value) > 10 then Doppel7.Font.Size := 6 // frxReportAufstellung.Variables.Variables['Doppel7'] else Doppel7.Font.Size := 10; //<frxReportAufstellung."Doppel7">.Font.Size := 10; end |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Springt er in die richtige Bedingung?
|
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Und was für ein Typ hat "Doppel7"?
|
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Ist vielleicht "ParentFont" true?
|
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Wenn diese Prozedur eine Methode der Reportklasse sein soll, müsste dann nicht der Klassenname davor stehn?
Delphi-Quellcode:
Ist das tatsächlich der Fall und du hast das lediglich unterschlagen, ist die Methode dem Ereignis der Komponente zugewiesen?
procedure Txxxxx.Doppel7OnBeforePrint(Sender: TfrxComponent);
begin Entweder bereits in der Entwicklungszeit oder alternativ zur Laufzeit:
Delphi-Quellcode:
Wenn du einen Breakpoint in die Methode setzt, wird die Methode aufgerufen und hält das Programm dann dort an?
{zur Laufzeit}
Doppel7.OnBeforePrint := Doppel7OnBeforePrint; Offensichtlich geht es dir doch um die Länge des Textes, der dargestellt werden soll. Dann muss du dich auch auf den Text der Komponente beziehen. Nun die bereits gestellte spannende Frage: Von welchem Typ ist die Komponente? Davon hängt hab wie du den Text ermitteln kannst. Manche haben ein Property Text oder Caption oder ein Ereignis "OnGetText". |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Zitat:
|
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Hallo und Danke für die Unterstützung. Das Feld ist "TrfxMemoView"-Feld. Es ist als Variable definiert. Die Übergabe des Inhaltes funktioniert. Ein "Parent Font" finde ich in meiner Version von Fastreport nicht. Ich werde jetzt noch die Variablen in spitze Klammern setzen.
Gruß, Luckner |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
TfrxMemoView hat ein Text-Property.
Das kann man abfragen, wenn die Anzahl der Zeichen im Text das Kriterium ist. Für die Änderung der Darstellung abhängig vom Inhalt ist das OnAfterData-Event vieleicht besser geeignet.
Delphi-Quellcode:
procedure Doppel7OnAfterData(Sender: TfrxComponent);
var iFontSize: Integer; begin if Length(TfrxMemoView(Sender).Text) > 10 then iFontSize := 8 else iFontSize := 10; TfrxMemoView(Sender).Font.Size := iFontSize; end; |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
folgende Fehlermeldung bekomme ich in folgendem Script
Delphi-Quellcode:
folgender Fehler erscheint:
procedure Doppel7OnBeforePrint(Sender: TfrxComponent);
var iFontSize: Integer; begin if Length(<frxReportAufstellung."Doppel7">.value) > 10 then iFontSize := 6 else iFontSize := 10; //<frxReportAufstellung.['Doppel7']>.Font.Size := iFontSize end; begin end. Script error 5:45: ')' expected Keine Ahnung, wo hier logisch eine Klammer fehlt. OnAfterData-Event ist, so glaube ich, auch besser geeignet. Werde ich ausprobieren wenn dieses Script funktioniert. |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Zitat:
Code:
Nachtrag: Blup hat dir die Lösung schon gepostet!
if Length(<frxReportAufstellung."Doppel7">) > 10 then
Außerdem lässt sich über das Kontextmenü des Feldes der Bearbeiten Dialog öffnen und dort unter Tab Highlight eine Bedingung für die Formatierung festlegen. Bis bald... Thomas |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Hier meine Lösung, die funktioniert:
Delphi-Quellcode:
Danke für die Tipps.
procedure Doppel7OnBeforePrint(Sender: TfrxComponent);
var iFontSize: Integer; begin if Length(<Doppel7>) > 10 then iFontSize := 8 else iFontSize := 10; Doppel7.Font.Size := iFontSize; end; Gruß, Luckner |
AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
Warum nicht gleich so?
Delphi-Quellcode:
procedure Doppel7OnBeforePrint(Sender: TfrxComponent);
begin if Length(<Doppel7>) > 10 then Doppel7.Font.Size := 8 else Doppel7.Font.Size := 10; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz