Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben (https://www.delphipraxis.net/208935-fastreport-variable-fontgroesse-abhaengig-von-anzahl-der-buchstaben.html)

Luckner 1. Okt 2021 10:31


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:
procedure Doppel7OnBeforePrint(Sender: TfrxComponent);
begin
  if Length(Doppel7) > 10 then
    Doppel7.Font.Size := 8   
  else
    Doppel7.Font.Size := 10;                                                                                          
end;
ändert nichts.

Die nächste Routine macht Fehler beim Aufruf.
Delphi-Quellcode:
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;
"Doppel7" ist die entsprechende Variable. Die Übergabe des Inhaltes funktioniert. Formatierung jedoch nicht.

Gruß, Luckner

Olli73 1. Okt 2021 11:05

AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
 
Meinst du vielleicht "if Length(Doppel7.Value) > 10 then ..."

Luckner 1. Okt 2021 11:14

AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
 
Jetzt habe ich es so geändert.
Delphi-Quellcode:
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
Keine Fehler, jedoch auch keine Änderung der Schrift.

Olli73 1. Okt 2021 11:16

AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
 
Springt er in die richtige Bedingung?

Olli73 1. Okt 2021 11:19

AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
 
Und was für ein Typ hat "Doppel7"?

Olli73 1. Okt 2021 11:23

AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
 
Ist vielleicht "ParentFont" true?

Blup 1. Okt 2021 12:05

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:
procedure Txxxxx.Doppel7OnBeforePrint(Sender: TfrxComponent);
begin
Ist das tatsächlich der Fall und du hast das lediglich unterschlagen, ist die Methode dem Ereignis der Komponente zugewiesen?
Entweder bereits in der Entwicklungszeit oder alternativ zur Laufzeit:
Delphi-Quellcode:
{zur Laufzeit}
Doppel7.OnBeforePrint := Doppel7OnBeforePrint;
Wenn du einen Breakpoint in die Methode setzt, wird die Methode aufgerufen und hält das Programm dann dort an?

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".

Frickler 1. Okt 2021 17:42

AW: Fastreport, Variable Fontgrösse abhängig von Anzahl der Buchstaben
 
Zitat:

Zitat von Blup (Beitrag 1495634)
Wenn diese Prozedur eine Methode der Reportklasse sein soll, müsste dann nicht der Klassenname davor stehn?
Delphi-Quellcode:
procedure Txxxxx.Doppel7OnBeforePrint(Sender: TfrxComponent);
begin

Wenn er das in Delphi macht, ja. Aber in der Pascal-Scriptsprache von Fastreport stehen vor den Methoden keine Klassennamen.

Luckner 2. Okt 2021 06:36

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

Blup 2. Okt 2021 14:56

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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz