Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Rave Reports Schriftgröße anpassen (https://www.delphipraxis.net/151987-rave-reports-schriftgroesse-anpassen.html)

DanielO 8. Jun 2010 11:49

Rave Reports Schriftgröße anpassen
 
Hallo alle zusammen,

ich habe einen Rave Report angelegt und will mit diesem Report Namensschilder in Kartengröße ausdrucken. Da jedoch manche Namen zu lange sind werden diese abgeschnitten. Wie kann ich es bewerkstelligen, dass bei Namen, die größer sind als die Druckfläche, die Schriftgröße verkleinert wird?
Vielen Dank für eure Antworten.
Daniel

rawi 8. Jun 2010 12:23

AW: Rave Reports Schriftgröße anpassen
 
Hallo DanielO,

sieh dir mal das hier an.

Musst Du jetzt nur noch auf deinen Text umbauen.

mit
Delphi-Quellcode:
var MeinText : TRaveCustomText;
und
Delphi-Quellcode:
MeinText.Font.Size := 78;
sollte es funktionieren

DanielO 8. Jun 2010 15:26

AW: Rave Reports Schriftgröße anpassen
 
Vielen Dank rawi,

leider ist das nicht die Lösung die ich gesucht habe. Das Problem ist, dass die Parameter dynamisch gesetzt werden. Will ich dann MeinText.width abfragen, erhalte ich leider immer nur die Breite des zuvor im Report gesetzten Rahmens und nicht die Breite des eigentlichen Texts. Gibt es eine Möglichkeit die "wahre" Breite des Textes abzufragen?
Danke vielmals.

alphaflight83 8. Jun 2010 16:32

AW: Rave Reports Schriftgröße anpassen
 
Mit dieser Funktion (Entwickler-Forum, ungetestet) könntest du die Länge des Texts vor der Übergabe checken.

Code:
uses graphics, windows;

function TextDimensions(const Text: String; Font: TFont = nil): TSize;
var
  DC: hDC;
  F: hFont;
  R: TRect;
begin
  F := 0;
  DC := GetDC(0);
  try
    if Font <> nil then
      F := SelectObject(DC, Font.Handle);
    if not GetTextExtentPoint32(DC, PChar(Text), Length(Text), Result) then begin
      Result.cx := 0;
      Result.cy := 0;
    end;
  finally
    if F <> 0 then
      SelectObject(DC, F);
      ReleaseDC(0, DC);
    end;
end;
Die Referenzgröße nimmst du aus deinem Rave-Formular.
Wenn dann die ermittelte x-Komponente von TSize größer ist als dein Referenzwert, verringerst du die Schriftgröße.
Das machst du dann solange bis es passt ... oder so :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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