AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TStringGrid: Breite einer Spalte anpassen (fit to grid)
Thema durchsuchen
Ansicht
Themen-Optionen

TStringGrid: Breite einer Spalte anpassen (fit to grid)

Ein Thema von hoika · begonnen am 14. Jan 2009 · letzter Beitrag vom 14. Jan 2009
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

TStringGrid: Breite einer Spalte anpassen (fit to grid)

  Alt 14. Jan 2009, 10:40
Hallo #,

besser konnte ich es nicht ausdrücken.
Was ich will.
Im Zuge eines Tests for MultiLine-Grids
möchte ich eine Spalte in der Breite genau so anpassen,
dass das Grid ohne Scrollbar (horizontal) angezeigt wird.

Genau diese eine Spalte wäre dann der Kandidat für MultiLine.

Der nachfolgende Code funktioniert.
aber die Konstante C_AddSpace habe ich jetzt per Trial/Error ausprobiert.

Delphi-Quellcode:
procedure Grid_FitGridColSize(theGrid: TStringGrid; const theCol: Integer);
const
  C_AddSpace = 3;
var
  iGridWidth : Integer;
  iCol : Integer;
  iSumColWidth : Integer;
  iDiffColWidth : Integer;
begin
  try
    iGridWidth:= theGrid.Width;

    iSumColWidth:= 0;
    for iCol:= 0 to theGrid.ColCount-1 do
    begin
      if iCol<>theCol then
      begin
        if theGrid.ColWidths[iCol]>0 then
        begin
          iSumColWidth:= iSumColWidth+theGrid.ColWidths[iCol];
         { space between the columns } 
          Inc(iSumColWidth, C_AddSpace);
        end;
      end;
    end;

    iDiffColWidth:= iGridWidth-iSumColWidth;
    if iDiffColWidth<0 then
    begin
      iDiffColWidth:= 10;
    end;

    theGrid.ColWidths[theCol]:= iDiffColWidth;
  except
  end;
end; { Grid_FitGridColSize }
Komme ich an diese 3 irgendwie anderes ran
über Grid-Funktionen ?


Danke


Heiko
Heiko
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: TStringGrid: Breite einer Spalte anpassen (fit to grid)

  Alt 14. Jan 2009, 12:26
Moin, Moin.
So recht kann ich die Zahl 3 nun nicht nachvollziehen, aber vom Grundsatz gehört zu jeder Spalte die Breite der vertikalen Linie (i.d.R.=1) bei n Spalten müssen wohl die Linien n+1 mal addiert werden. Du setzt die Summe der Spaltenbreite dann in Relation zur GridBreite, da muss auch der gesetzte BorderStyle zu berücksichtigen. Tja, und last but not least natürlich noch die ggf. vorhandene vertikale Scrollbar, die ja auch eine gewissen Breite einnimmt.
Ralph
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: TStringGrid: Breite einer Spalte anpassen (fit to grid)

  Alt 14. Jan 2009, 12:34
Hallo,

ich kann die 3 auch nicht nachvollziehen.
Bei 2 oder 1 wird ein horizontaler ScrollBar angezeigt.


Die 3 könnte natürlich auch Zufall sein,
in Abhängigkeit der Anzahl der Spalten.


Ich setze die Option mal als experimental


Heiko
Heiko
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: TStringGrid: Breite einer Spalte anpassen (fit to grid)

  Alt 14. Jan 2009, 12:54
Ok,
aber auf jeden Fall musst du in die Berechnung die Linienbreite, den BorderStyle und die Scrollbar einbeziehen - sonst kann die Prozedur kein allgemeingültiges Ergebnis liefern!
Ralph
  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 12:03 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