![]() |
Dynamische StrigGrid breite will nicht.
Liste der Anhänge anzeigen (Anzahl: 1)
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:
aufgerufen wird das ganze so..:
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;
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 |
Re: Dynamische StrigGrid breite will nicht.
Ganzzahlige Division ist immer extrem ungenau. Benutze doch Gleitkommazahlen und runde dann einfach.
|
Re: Dynamische StrigGrid breite will nicht.
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 |
Re: Dynamische StrigGrid breite will nicht.
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz