AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Stringgrid, Zeile automatisch an Textgrösse anpassen
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid, Zeile automatisch an Textgrösse anpassen

Ein Thema von Luckner · begonnen am 8. Dez 2014 · letzter Beitrag vom 19. Mai 2015
Antwort Antwort
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 8. Dez 2014, 10:39
Hallo,
habe in einem Stringgrid die Option goRowSizing auf True gesetzt. Damit, so glaube ich und es funktioniert, die Zeilenhöhe automatisch an den Text der Zelle angepasst. Die Zeile wird jedoch nicht automatisch kleiner, falls der Text in dieser Zelle kleiner wird. Gibt es eine Funktion, mit der ich diese Zellgrössen-Anpassung auslösen kann?

Danke, Luckner.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.443 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 8. Dez 2014, 14:53
Zitat:
Hallo,
habe in einem Stringgrid die Option goRowSizing auf True gesetzt. Damit, so glaube ich und es funktioniert, die Zeilenhöhe automatisch an den Text der Zelle angepasst.
goRowSizing -> Der Anwender kann mit der Maus die Höhe einzelner Spalten verändern.

Zitat:
Die Zeile wird jedoch nicht automatisch kleiner, falls der Text in dieser Zelle kleiner wird. Gibt es eine Funktion, mit der ich diese Zellgrössen-Anpassung auslösen kann?
Wenn es solch eine Funktion gäbe, von welcher Spalte wäre die Höhe abhängig?
- Man müsste also erst einmal die Höhe jeder einzelnen Zelle dieser Zeile und davon die größte Höhe bestimmen (Canvas.TextHeight()).
- Oberen und unteren Rand addieren.
- Eventuell bestimmte Grenzwerte berücksichtigen (minimale und maximale Höhe).
- Zum Schluss StringGrid.RowHeight[] entsprechend setzen.
Viel Spass beim Programmieren.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#3

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 8. Dez 2014, 15:32
Hallo zusammen,

für die Breite habe ich das so gemacht:

Delphi-Quellcode:
procedure HGGridColWidth(AGrid: TStringGrid; AMinWidth: Integer);
var
  liZ1: Integer;
  liZ2: Integer;
  liWidth: Integer;
  liTextWidth: Integer;
  liMaxWidth: Integer;
const
  ciWidthAdd = 5;
begin
  if (AMinWidth < 0) then
   begin
    AMinWidth := AGrid.DefaultColWidth;
   end;

  for liZ1 := 0 to (AGrid.ColCount -1) do
   begin // alle Spalten
    liMaxWidth := 0;
    for liZ2 := 0 to (AGrid.RowCount - 1 ) do
     begin // alle Zeilen
      liTextWidth := AGrid.Canvas.TextWidth(AGrid.Cells[liZ1, liZ2]);
      if (liTextWidth > liMaxWidth) then
       begin
        liMaxWidth := liTextWidth;
       end;
     end;

    if ((liMaxWidth + AGrid.GridLineWidth + ciWidthAdd) > AMinWidth) then
     begin
      liWidth := liMaxWidth + AGrid.GridLineWidth + ciWidthAdd;
     end
    else
     begin
      liWidth := AMinWidth;
     end;
    AGrid.ColWidths[liZ1] := liWidth;
   end;
end;
Das kann man mit ein bischen Fantasie auch problemlos auf die Zellenhöhe übertragen.
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 8. Dez 2014, 15:40
Ja, dass habe ich mir schon gedacht, dass man Das von Hand programmieren muss. Also alle Zellen durchgehen, die höchste Zelle aussuchen und entsprechen die Zellhöhe, für alle setzen.

Danke.
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 8. Dez 2014, 15:51
Hallo BadenPower,

Dein Beispiel ist ein guter Ansatz. Werde es entsprechend modifizieren. Danke.

Luckner.
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 13. Dez 2014, 07:00
Hallo BadenPower,
mache mich gerade ran, Deine Routine für mich anzupassen, Brauche bitte noch einige Hinweise:
Was ist
AMinWidth: Integer
liZ1: Integer; (kann ich mir denken)
liZ2: Integer; (kann ich mir denken)
liWidth: Integer;
liTextWidth: Integer; (kann ich mir denken)
liMaxWidth: Integer;

Vor Allem AMinWith.

Danke.
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:21 Uhr.
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