Einzelnen Beitrag anzeigen

xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#1

Dynamische StrigGrid breite will nicht.

  Alt 4. Jul 2008, 13:51
Hallo zusammen,

ich probiere gerade meinem TStringGrid beizubringen, wenn das Formular resized wird, sich automatisch der neuen Größe anzupassen.

Das Problem ist, das bei bestimmten Größen die Breite nicht angepasst wird sondern nur ab einer bestimmten Breite. (siehe Dateianhang).


Ich habe hierfür die Breiten in Prozent angegeben.

Delphi-Quellcode:
type
        TDynamicWidth = record
                iWidth: Integer;
        end;

var
        aDynamicWidth: Array of TDynamicWidth;

Die eigentliche Prozedure sieht wie folgt aus:

Delphi-Quellcode:
type
        TStringGridHack = class(TStringGrid)
                public
                        procedure setDynamicWidth(fTarget: TStringGrid; aWidth: Array of TDynamicWidth);

        end;

var
        oStringGridHack: TStringGridHack;

procedure TStringGridHack.setDynamicWidth(fTarget: TStringGrid; aWidth: Array of TDynamicWidth);
var
        i: Integer;
        iGridWidth: Integer;
begin
        if Length(aWidth) > 0 then begin
                iGridWidth := fTarget.Width;
                for i := 0 to Length(aWidth) - 1 do begin
                        fTarget.ColWidths[i] := iGridWidth div 100 * aWidth[i].iWidth;
                end;

        end;
end;
aufgerufen wird das ganze so..:

Delphi-Quellcode:
procedure TPreferences.FormResize(Sender: TObject);
var
        aWidth: Array of TDynamicWidth;
begin
        // 3 Spalten im TStringGrid
        SetLength(aWidth, 3);

        // Werte in Prozent
        aWidth[0].iWidth := 40;
        aWidth[1].iWidth := 20;
        aWidth[2].iWidth := 40;
        

        oStringGridHack.setDynamicWidth(sgBindings, aWidth);
        SetLength(aWidth, 0);
end;


Weiß jemand warum die breite der einzelnen Spalten nicht präzise berechnet werden?


LG Toby
Miniaturansicht angehängter Grafiken
falschebreite_535.jpg  
  Mit Zitat antworten Zitat