AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Spaltenbreite im TDBGrid
Thema durchsuchen
Ansicht
Themen-Optionen

Spaltenbreite im TDBGrid

Offene Frage von "Andidreas"
Ein Thema von Andidreas · begonnen am 1. Mär 2010 · letzter Beitrag vom 3. Mär 2010
Antwort Antwort
Benutzerbild von Andidreas
Andidreas

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

Spaltenbreite im TDBGrid

  Alt 1. Mär 2010, 12:59
Datenbank: MySQL • Version: 5.x • Zugriff über: MyDac
hallo zusammen,

wenn ich daten aus einer datenbank abfrage und diese über ein datasource in meinem dbgrid anzeigen lasse, dann wird als spaltenbreite auf die länge des datenbank feldes angepasst...

gibt es auch eine möglichkeit die spaltenbreite an den längsten wert des feldes anzupassen? also so etwas ähnliches wie im excel... dort heißt es glaub "autofit"
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 Andidreas
Andidreas

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

Re: Spaltenbreite im TDBGrid

  Alt 1. Mär 2010, 14:21
so für alle die des auch suchen...

so kann man en autofit für alle spalten auf sein dbgrid machen:

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);

var
iMaxTextLength : Integer;
i, j : Integer;

begin

  //Columns
  For i := 0 To dbgrid_layout.Columns.Count -1 Do
  Begin
    //Row per Column
    iMaxTextLength := 0;
    For j := 1 To dbgrid_layout.DataSource.DataSet.RecordCount Do
    Begin
      dbgrid_layout.DataSource.DataSet.RecNo := j;
      If dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Field.DisplayText) > iMaxTextLength Then
      Begin
        iMaxTextLength := dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Field.DisplayText);
      End;
    End;
    //Check Title Text longer then Item Text
    If dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Title.Caption) > iMaxTextLength Then
    Begin
      dbgrid_layout.Columns[i].Width := dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Title.Caption) + 10;
    End Else
    Begin
      dbgrid_layout.Columns[i].Width := iMaxTextLength + 10;
    End;
  End;

  dbgrid_layout.Repaint;

end;
ob des die beste lösung is... kp... aufjedenfall funktionierts


Edit: Source Code aktualisiert
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 Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Spaltenbreite im TDBGrid

  Alt 1. Mär 2010, 14:33
Es gibt noch die Property "DisplayWidth"
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

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

Re: Spaltenbreite im TDBGrid

  Alt 1. Mär 2010, 14:35
inwieweit würde die mir helfen?
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 Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Spaltenbreite im TDBGrid

  Alt 1. Mär 2010, 14:41
Damit kannst Du bestimmen, wie breit ein Feld bei der Anzeige sein soll.

Da Du nun aber sowieso ein eigenes AutoFit gemacht hast, brauchst Du das nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

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

Re: Spaltenbreite im TDBGrid

  Alt 1. Mär 2010, 14:51
ok... aber damit ich displaywidth nutzen kann müsste ich ja erst mal wissen wie lang der längste text in der spalte ist... oder gibt mir display width genau den zurück?
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 Andidreas
Andidreas

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

Re: Spaltenbreite im TDBGrid

  Alt 2. Mär 2010, 09:10
jetzt hab ich aber folgendes problem...

der obige source gibt mir manchmal die fogende fehlermeldung aus:

EInvalidPointer "Ungültige Zeigeroperation"


aber die fehlermeldung kommt nicht immer... hatt jemand eine idee woran das liegen kann???
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
FrankJ28

Registriert seit: 7. Apr 2008
211 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Spaltenbreite im TDBGrid

  Alt 2. Mär 2010, 09:44
Hallo,
ich habe deinen Code nicht getestet, aber mich stutzt ein wenig deine Schleife

Delphi-Quellcode:
    For j := 0 To dbgrid1.DataSource.DataSet.RecordCount Do
    Begin
      dbgrid1.DataSource.DataSet.RecNo := j;
Warum ab 0? Wenn Du keine Datensätze hast, dann wird das trotzdem durchlaufen und deine .RecNo=0 müsste auch scheitern.
Ist das vielleicht dein Problem?
Ciao
Frank
"Sage was du tust, und tue was du sagst"
Johannes Rau
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

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

Re: Spaltenbreite im TDBGrid

  Alt 2. Mär 2010, 09:48
Zitat von FrankJ28:
Hallo,
ich habe deinen Code nicht getestet, aber mich stutzt ein wenig deine Schleife

Delphi-Quellcode:
    For j := 0 To dbgrid1.DataSource.DataSet.RecordCount Do
    Begin
      dbgrid1.DataSource.DataSet.RecNo := j;
Warum ab 0? Wenn Du keine Datensätze hast, dann wird das trotzdem durchlaufen und deine .RecNo=0 müsste auch scheitern.
Ist das vielleicht dein Problem?
Ciao
Frank
das mit dem "j := 0" hab ich in meiner aktuellen version bereits auch geändert... hatte vergessen hier den source zu aktualsieren...
aber selbst wenn ich bei 1 beginne tritt der fehler auf...
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 Andidreas
Andidreas

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

Re: Spaltenbreite im TDBGrid

  Alt 3. Mär 2010, 17:11
*push*
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  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 04:06 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