AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische StrigGrid breite will nicht.

Ein Thema von xSkaschY · begonnen am 4. Jul 2008 · letzter Beitrag vom 4. Jul 2008
Antwort Antwort
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, 14: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
Benutzerbild von DeddyH
DeddyH

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

Re: Dynamische StrigGrid breite will nicht.

  Alt 4. Jul 2008, 14:55
Ganzzahlige Division ist immer extrem ungenau. Benutze doch Gleitkommazahlen und runde dann einfach.
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
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#3

Re: Dynamische StrigGrid breite will nicht.

  Alt 4. Jul 2008, 15:00
Colwidths[i] enthält die INNERE breite der Zellen. Da kommt also noch mindestens ein pixel prozelle hinzu.
zu dem solltest du den Style flat Machen um den Gitter Rand zu entfernen
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
xSkaschY

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

Re: Dynamische StrigGrid breite will nicht.

  Alt 4. Jul 2008, 15:05
Zitat von DeddyH:
Ganzzahlige Division ist immer extrem ungenau. Benutze doch Gleitkommazahlen und runde dann einfach.
Danke das war des Rätselslösung!

Zitat von QuickAndDirty:
Colwidths[i] enthält die INNERE breite der Zellen. Da kommt also noch mindestens ein pixel prozelle hinzu.
zu dem solltest du den Style flat Machen um den Gitter Rand zu entfernen
Ja, habe ich gerade gemerkt. Auch dir danke für den Tip!
  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 01:00 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