![]() |
Datenbank: Access • Zugriff über: ADO
DBGrid ausgewähltes Feld vorne anzeigen
Ich versuche einen Suchdialog zu programmieren.
Dabei wird In einer EditBox der Suchbegriff eingegeben und in aus einer ComboBox wird das Feld ausgewählt in dem gesucht werden soll. Benutzt wird Eine ADOConnection,eine Query und eine Datasource. Im Query mache ich meine Selektion und diese Datensätze werden dann im DBGrid angezeigt. Soweit so gut. Jetzt soll aber das zum suchen ausgewählte Feld soll in der ersten Spalte im Grid stehen, die anderen Felder sollen aber auch noch angezeigt werden. Eventuell kann das auch mit 2 DBGrids gemacht werden, wenn es zu kompliziert ist. Eines nur für den Suchbegriff und eines für die ganze Tabelle. Jetzt meine Frage: 1. wie mache ich das am sinnvollsten. 2. Soll ich Persistente Felder für das DBGrid benutzen oder geht es ohne zuviel Aufwand auch ohne. (etwa 90 Felder). 3. Geht es mit einem Grid oder brauche ich 2. Für ein paar hilfreiche Quellcodezeilen wäre ich dankbar. (speziell für das ansprechen des DBGrid für die Spalten-Umsetzung und Ein- und -Ausblendung) Mit einem Link auf einen passenden Bericht bin ich auch schon zufrieden. |
Re: DBGrid ausgewähltes Feld vorne anzeigen
Zitat:
Delphi-Quellcode:
Query.FieldByName(suchfeldname).Index := 0;
|
Re: DBGrid ausgewähltes Feld vorne anzeigen
Wenn das so einfach ist, warum weiß ich das dann nicht ...grübel ...grübel
|
Re: DBGrid ausgewähltes Feld vorne anzeigen
Zitat:
|
Re: DBGrid ausgewähltes Feld vorne anzeigen
Mann o Mann, da denk ich mir die tollsten Variationen aus und dann ist das so einfach.
Aber ganz so leicht lass ich noch nicht locker. Im Prinzip funktioniert das ja Prima, aber wenn ich den Befehl das zweite mal anwende, dann verschiebt es mir die ganze Reihenfolge, da dann das zuletzt angewählte Feld nun an zweiter Stelle steht und nicht wieder an seinem alten Platz. Die erste Spalte könnte ruhig immer überschrieben werden, da steht nur die ID drin, die muss man nicht sehen. Das ist doch jetzt nicht etwa wieder so einfach ... oder??? P.S. mit welchem Befehl blende ich Felder aus im Grid ? |
Re: DBGrid ausgewähltes Feld vorne anzeigen
Mit Table1.FieldByName('Testfeld').Visible := False kann man ein Feld im Grid unsichtbar machen.
|
Re: DBGrid ausgewähltes Feld vorne anzeigen
Hallo Smiley,
das Verschieben eines Feldes im Gitter kannst du über eine private Methode organisieren:
Delphi-Quellcode:
PromotedIndex ist dabei eine private Variable vom Typ Integer, in der die alte Position des Feldes gespeichert wird.
procedure TDemoForm.Promote(ds: TDataSet; const fieldName: string);
var f: TField; begin if (PromotedIndex > 0) and (PromotedIndex < ds.FieldCount) then begin ds.Fields[0].Index := PromotedIndex; PromotedIndex := 0; end; if fieldName <> '' then begin f := ds.Fields.FieldByName(fieldName); PromotedIndex := f.Index; f.Index := 0; end; end; Freundliche Grüße |
Re: DBGrid ausgewähltes Feld vorne anzeigen
Danke Marabu
das ist eine ziemlich effiziente Methode, ich hätte nicht gedacht, das sowas funktionieren kann. Erst wird das erste Feld auf seine alte Position gebracht, wobei ich schon die Befürchtung hatte,dass dabei der alte Index ja nicht mehr stimmt, da doch schon alles durch den letzten Einfügeakt verschoben wurde. Dann verschiebt sich durch das Einfügen an der alten Stelle ja auch wieder alles hinter dieser Stelle. Dann nehme ich aus der Liste wieder irgendwo was raus und schiebe es vorne rein, dann verschieben sich wieder alle Felder. Dass das ganze gut geht hätte ich nicht erwartet, aber wenn Du es schreibst muss es funktionieren. Das ist genau das was ich haben wollte, nochmals vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 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