![]() |
Datenbank: firebird • Version: 2.1 • Zugriff über: zeos
DBgrid anpassen
hallo zusammen,
ich habe ein dbgrid mit einer query verbunden. Im Grid möchte ich nicht alle Felder der Query anzeigen. Z.B brauche ich zwar die artikel_id, die soll aber nicht im Grid angezeigt werden. Also habe ich mit : self.columns[0].width := (self.width -20) div 3; self.columns[1].width := (self.width -20) div 3; self.columns[2].width := (self.width -20) div 3; die Breite der Felder berechnet und mit : TColumn(self.Columns[0]).Field:= FartikelQuery.FieldByName('artikelnummer'); usw. die anzuzeigenden Felder definiert. so habe ich 3 Felder der Datenmenge in der Anzeige, die die Breite des Grid auch komplett ausfüllen. Leider springt das Grid beim Klick auf das letzte(dritte) Feld auf das 4te Feld der Datenmenge ,welches eigentlich nicht im Grid erscheinen soll., und die felder lassen sich per mausklick nach links scrollen. die restlichen Einstellungend es Grid sind folgende: self.ScrollBars:= ssAutoVertical; self.options:= [dgEditing,dgTitles,dgRowSelect]; Wie kann ich das Grid auf die 3 Felder begrenzen und das Scrollen verhindern? EDIT: eine unterschiedliche Spaltenbreite wäre in diesem Zusammenhang auch nicht schlecht. Danke Gruss KH |
Re: DBgrid anpassen
Hallo khh,
mit Doppelclick auf das Grid öffnet sich der Eintragseditor für das Grid. Hier kanst du die Spalten eintragen die dargestellt werden sollen, oder die löschen die nicht angezeigt werden sollen. Wenn hier nichts drin steht werden einfach alle angezeigt. Solltest Du den SQL-Text in der verbundenen Komponente drin haben kanst Du dier im Kontextmenü des Eintagseditors die Spalten automatisch eintragen lassen und die anderen dann löschen. Du könntest auch dynamisch die Spalten auf visible:=false setzen. Stichwort Columns... des DBGrid cu cg |
Re: DBgrid anpassen
Zitat:
Gruss KH |
Re: DBgrid anpassen
ok, das mit der Anzeige verhindern funktioniert jetzt, indem ich die restlichen Felder mit:
self.columns[i].visible := false; ausblende. Leider springt die Anzeige beim Klick aufs Grid immer noch nach links. Jetzt erscheint anstatt des nächsten DB-Feldes ein leeres Feld :-( was kann ich noch einstellen? Gruss KH |
Re: DBgrid anpassen
Lösch die nicht benötigten Felder doch einfach raus (DBGrid.Columns.Delete(Index)).
|
Re: DBgrid anpassen
mh, das ist jetzt schon komisch:
mit
Delphi-Quellcode:
werden die spalten nicht angezeigt , aber oben erwähnter effekt des scrollen tritt dennoch auf.
for i:= 3 to 24 - 1 do
begin self.columns[i].visible := false; end; Mit:
Delphi-Quellcode:
bekomme ich den fehler:for i:= 3 to 24 - 1 do begin self.Columns.Delete(i) ; end; List Index(14) out of bounds :-( Warum denn 14 ? Gruss KH |
Re: DBgrid anpassen
Löschen musst Du bei einer for-Schleife immer von hinten.
Delphi-Quellcode:
for i:= 23 downto 3 do
begin self.Columns.Delete(i) ; end; |
Re: DBgrid anpassen
Zitat:
dann bekomme ich : List Index(23) out of bounds :-( |
Re: DBgrid anpassen
Weil sich die Menge der zu löschenden Elemente beim Löschen reduziert.
|
Re: DBgrid anpassen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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 by Thomas Breitkreuz