AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid ausgewähltes Feld vorne anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid ausgewähltes Feld vorne anzeigen

Ein Thema von Smiley · begonnen am 21. Feb 2008 · letzter Beitrag vom 22. Feb 2008
Antwort Antwort
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

DBGrid ausgewähltes Feld vorne anzeigen

  Alt 21. Feb 2008, 16:33
Datenbank: Access • Zugriff über: ADO
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: DBGrid ausgewähltes Feld vorne anzeigen

  Alt 21. Feb 2008, 16:40
Zitat von Smiley:
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.
Du kannst das Feld über das Setzen des Index in die 1. Spalte bringen:
Query.FieldByName(suchfeldname).Index := 0;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: DBGrid ausgewähltes Feld vorne anzeigen

  Alt 21. Feb 2008, 16:42
Wenn das so einfach ist, warum weiß ich das dann nicht ...grübel ...grübel
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: DBGrid ausgewähltes Feld vorne anzeigen

  Alt 21. Feb 2008, 16:44
Zitat von Smiley:
Wenn das so einfach ist, warum weiß ich das dann nicht ...grübel ...grübel
Weil du ein armes Smiley bist.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: DBGrid ausgewähltes Feld vorne anzeigen

  Alt 21. Feb 2008, 16:54
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: DBGrid ausgewähltes Feld vorne anzeigen

  Alt 22. Feb 2008, 02:47
Mit Table1.FieldByName('Testfeld').Visible := False kann man ein Feld im Grid unsichtbar machen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: DBGrid ausgewähltes Feld vorne anzeigen

  Alt 22. Feb 2008, 09:10
Hallo Smiley,

das Verschieben eines Feldes im Gitter kannst du über eine private Methode organisieren:

Delphi-Quellcode:
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;
PromotedIndex ist dabei eine private Variable vom Typ Integer, in der die alte Position des Feldes gespeichert wird.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: DBGrid ausgewähltes Feld vorne anzeigen

  Alt 22. Feb 2008, 19:51
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.
  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 15:49 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