AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ausgabe von TextHeight stürzt ab

Ein Thema von Nikodel · begonnen am 7. Feb 2019 · letzter Beitrag vom 7. Feb 2019
 
Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#1

Ausgabe von TextHeight stürzt ab

  Alt 7. Feb 2019, 16:41
Hi,
jetzt habe ich einen ganz merkwürdigen Effekt. Ich möchte testweise die Texthöhe in einem TEdit ausgeben:
Code:
procedure TMainForm.drucken1Click(Sender: TObject);
{ es wird von einem A4-Format ausgegangen }
var
  PrintForm: TForm2;
  txth: integer;
begin
  if idx_wd >= 0 then
  begin
    if PrintDialog1.Execute then
    begin
      PrintForm := TForm2.Create(self); // <<-- hier wird das Objekt von Unit2 erzeugt
      ...
      try
        PrintForm.ShowModal;
        // jetzt stehen die Ränder fest
        txth:= PrintForm.Canvas.TextHeight('9');      
        ...
        len_ltick:= ...
        len_stick:=len_ltick - PrintForm.Canvas.TextHeight('9');

      finally
        PrintForm.Free;
      end;
      // Printer.Orientation wird bereits in PrintDialog1 festgelegt
      Edit2.Text:='bl='+border_left.ToString+' bt='+border_top.ToString+
                  ' br='+border_right.ToString+' bb='+border_bottom.ToString+
                  '  ltick='+len_ltick.ToString+' stick='+len_stick.ToString+
                  '  txth='+txth.ToString;         // <<-- txth kann ausgegeben werden
      Application.ProcessMessages;
      Edit2.Text:=Edit2.Text+(PrintForm.Canvas.TextHeight('9')).ToString;  <<-- hier gibt es eine Exception
      Application.ProcessMessages;
      ...
Die Zeilen
Code:
var
  ...
  txth: integer;
...
  txth:= PrintForm.Canvas.TextHeight('9');
...
  Edit2.Text:=Edit2.Text+(PrintForm.Canvas.TextHeight('9')).ToString;
sind extra zum Aufzeigen des Problems eingefügt.

Der Wert von txth lässt sich fehlerfrei berechnen und im Edit2 ausgeben.
Die direkte Ausgabe von "(PrintForm.Canvas.TextHeight('9')).ToString" ergibt jedoch eine Exception "Zugriffsverletzung bei Adresse ..."
Die Variante mit "IntToStr(PrintForm.Canvas.TextHeight('9'))" ergibt das gleiche Problem.

Was ist denn da falsch daran?
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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