Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DBGrid Spaltengrößen fehlerhaft (https://www.delphipraxis.net/188545-dbgrid-spaltengroessen-fehlerhaft.html)

haentschman 15. Mär 2016 07:55

DBGrid Spaltengrößen fehlerhaft
 
Hallöle...:P

Ich kann euch das leider nur sinngemäß erklären da ein Testprojekt garantiert funktioniert. :roll:

GEGEBEN:
Delphi Seattle

Viele Formulare mit jeweils einem DBGrid auf verschiedenen Parents (Panel, Groupbox, TabSheet). Für die Spalten existiert eine "Funktion" die die Spaltenbreite und Position wegspeichert und wieder herstellt. Funktioniert hunderte Male normal. Das Setzen der Spalten erfolgt jeweils im On Show.

IST:
Ein Formular schießt quer. Das Grid läßt sich nicht im On Show dazu bewegen die Spalten wieder herzustellen. ALLE Spalten sind exakt 64 breit auch wenn zur Designzeit andere Werte eingetragen sind. Testweise über einen Timer von 50ms nach OnShow die Spaltenformatierung gesetzt macht das was es soll. :roll:

Bei einem Kollegen war nur die Spalte 0 betroffen. Egal wie sie gesetzt war... zur Laufzeit immer 64.

Hat jemand dazu eine Idee?

Danke...:P

Thomas Horstmann 15. Mär 2016 08:16

AW: DBGrid Spaltengrößen fehlerhaft
 
Das ist ein Fehler in Delphi Seattle. Ich benutze "FormCreate" bzw. "FormClose" um die Breite zu laden/speichern.

Delphi-Quellcode:
procedure TWinDatabasesForm.FormCreate
( iSender : TObject ) ;
var
iRegistry : TRegistryIni ;
begin
{ Anlegen }
iRegistry := TRegistryIni.Create('Form\' + Name) ;
{ Spaltenbreite }
GridDatabases.ColWidths[0] := iRegistry.ReadInteger('GridDatabases','ColumnWidth1',GridDatabases.ColWidths[0]) ;
GridDatabases.ColWidths[1] := iRegistry.ReadInteger('GridDatabases','ColumnWidth2',GridDatabases.ColWidths[1]) ;
GridDatabases.ColWidths[2] := iRegistry.ReadInteger('GridDatabases','ColumnWidth3',GridDatabases.ColWidths[2]) ;
{ Löschen }
iRegistry.Free ;
end ;

...

procedure TWinDatabasesForm.FormClose
( iSender    : TObject     ;
  var iAction : TCloseAction ) ;
var
iRegistry : TRegistryIni ;
begin
{ Anlegen }
iRegistry := TRegistryIni.Create('Form\' + Name) ;
{ Spaltenbreite }
iRegistry.WriteInteger('GridDatabases','ColumnWidth1',GridDatabases.ColWidths[0]) ;
iRegistry.WriteInteger('GridDatabases','ColumnWidth2',GridDatabases.ColWidths[1]) ;
iRegistry.WriteInteger('GridDatabases','ColumnWidth3',GridDatabases.ColWidths[2]) ;
{ Löschen }
iRegistry.Free ;

{ Freigeben }
iAction := caFree ;
end ;

Uwe Raabe 15. Mär 2016 08:22

AW: DBGrid Spaltengrößen fehlerhaft
 
Hast du Update 1 installiert?

haentschman 15. Mär 2016 08:56

AW: DBGrid Spaltengrößen fehlerhaft
 
Zitat:

Hast du Update 1 installiert?
:? leider nein.
Zitat:

Das ist ein Fehler in Delphi Seattle
...ist das amtlich? :roll:

Uwe Raabe 15. Mär 2016 09:48

AW: DBGrid Spaltengrößen fehlerhaft
 
Zitat:

Zitat von haentschman (Beitrag 1332955)
Zitat:

Das ist ein Fehler in Delphi Seattle
...ist das amtlich? :roll:

regression: VCL TStringGrid.ColWidths is broken

Ist in Update 1 gefixed - daher meine Frage.

haentschman 15. Mär 2016 10:02

AW: DBGrid Spaltengrößen fehlerhaft
 
:cry: Hoch leben die Workarounds...

Danke an euer Mitgefühl. Jedenfalls wissen wir nun woran wir sind. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 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