AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Probleme mit TextWidth im String Grid

Ein Thema von Andidreas · begonnen am 2. Sep 2013 · letzter Beitrag vom 3. Sep 2013
Antwort Antwort
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Probleme mit TextWidth im String Grid

  Alt 2. Sep 2013, 13:21
Delphi-Version: 5
Hallo,

ich habe mir eine Funktion gebastelt mit der ich die Spaltenbreiten in einem StringGrid automatisch ermittle:

Delphi-Quellcode:
procedure prTStringGridAutoFit(strgrid : TStringGrid);

var
iMaxTextLength : Integer;
iCol, iRow : Integer;

begin

  //=== Auto Fit Columns =======================================================
  For iCol := 0 to (strGrid.ColCount -1) Do
  Begin
    iMaxTextLength := 0;
    For iRow := 0 To (strGrid.RowCount - 1 ) Do
    Begin
      If strGrid.Canvas.TextWidth(strGrid.Cells[iCol, iRow]) > iMaxTextLength Then
      Begin
        iMaxTextLength := strGrid.Canvas.TextWidth(strGrid.Cells[iCol, iRow]);
      End;
    End;
    strGrid.ColWidths[iCol] := iMaxTextLength + 25;
  End;
  //============================================================================

end;
In meinem aktuelle StringGrid habe ich unterschiedliche Schriftgrößen und Formattierungen (Fett, usw.)...
An was Orientiert sich denn die TextWidth Funktion? Nimmt es zur Berrechnung der Text Länge zufällig die Größte Schriftgröße?

Weil in meinem aktuellen Fall habe ich das Problem das ich in der ersten Spalte in kleinerer Schrift lange Texte hab und darunter einen kurzen Text mit einer größeren Schriftgröße und meine Spaltebreite absolut nicht zu den Text längen passt...?
Angehängte Grafiken
Dateityp: jpg screen.jpg (32,8 KB, 21x aufgerufen)
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#2

AW: Probleme mit TextWidth im String Grid

  Alt 2. Sep 2013, 13:27
Ich fürchte, das wird nicht funktionieren. Man kann einem StringGrid nur einen Font zuweisen, will man mehrere verwenden, muss man eben selbst zeichnen. Canvas.TextWidth dürfte sich aber lediglich auf den dem Grid-Canvas aktuell zugewiesenen Font orientieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Probleme mit TextWidth im String Grid

  Alt 2. Sep 2013, 15:03
Vielleicht hab ich mich falsch ausgedrückt...

Ich verwende nur eine Art von Font, diese aber in unterschiedlichen Schriftgrößen!

Deshalb meine Frage ob sich TextWidth an der größten Schriftgröße orientiert?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme mit TextWidth im String Grid

  Alt 2. Sep 2013, 15:06
Du zeichnest aber doch selber im OnDrawCell, oder wie bekommst Du die unterschiedlichen Schriftgrößen hin? Und dazu setzt Du dann StringGrid.Canvas.Font.Size. TextWidth wird dann aus dem aktuell zugewiesenen Font errechnet und nicht aus dem, den die Zeichenfläche zwischenzeitlich mal hatte.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#5

AW: Probleme mit TextWidth im String Grid

  Alt 2. Sep 2013, 16:41
Also muss die Zuweisung der Schrift-Attribute vor der Größenbestimmung genauso erfolgen, wie vor dem Zeichnen.
Am besten in einer Prozedur kapseln, die in beiden Fällen pro Spalte oder Zelle aufgerufen wird.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Probleme mit TextWidth im String Grid

  Alt 2. Sep 2013, 18:52
Also muss die Zuweisung der Schrift-Attribute vor der Größenbestimmung genauso erfolgen, wie vor dem Zeichnen.
Am besten in einer Prozedur kapseln, die in beiden Fällen pro Spalte oder Zelle aufgerufen wird.
Wenn du die Breite der Spalte mit den beiden unterschiedlichen Fontgrößen automatisch einstellen willst, vergleichst du die beiden TextWidth-Ergebnisse der beiden Zeilen in deiner Zelle und wählst die größere als Richtschnur aus. Da du diese Zelle offenbar im OnDraw selber zeichnest, mußt du dort auch die Zellbreite berechnen bzw. von dort aus eine Berechnungsmethode aufrufen.
  Mit Zitat antworten Zitat
Antwort Antwort

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 05: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