AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dbgrid Titel leer

Ein Thema von EG045947 · begonnen am 23. Mai 2022 · letzter Beitrag vom 28. Mai 2022
Antwort Antwort
EG045947

Registriert seit: 23. Mai 2022
13 Beiträge
 
#1

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 12:48
da bekomme ich einen Fehler: Argument außerhalb des Bereichs.

Denke er kommt mit den Daten von der DB irgenwie durcheinander.

Auch wenn ich die Anzahl der Spalten abfrage = 1

Geändert von EG045947 (23. Mai 2022 um 12:51 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
656 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 12:52
OK, habe leider die DBGrid Komponente selber schon Ewigkeiten nicht mehr genutzt. Versuche es mal so:

DBGrid.Fields[x].FieldName
PS. Lies dir doch bitte auch mal die Hilfe zum DBGrid durch. Da ist das beschrieben, dass man das per Fields machen muss und nicht über Columns. Fields[0] wäre die erste Spalte, Fields[1] die 2. usw.

Geändert von Rolf Frei (23. Mai 2022 um 12:56 Uhr)
  Mit Zitat antworten Zitat
EG045947

Registriert seit: 23. Mai 2022
13 Beiträge
 
#3

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 12:55
wenn ich das abfrage: DBGrid1.Fields[1].FieldName;
Bekomme ich auch ne Fehlermeldung: Zugriffsverletzung, etc...

Und falls dies funktionieren wird, x ist ja immer eine vorher festgelegte Zahl. Wie bekomme ich heraus in welcher Spalte ich den Titel angeklickt habe.
Sprich ist X = 1 oder 15?
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
637 Beiträge
 
Delphi XE6 Enterprise
 
#4

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 13:09
wenn ich das abfrage: DBGrid1.Fields[1].FieldName;
Bekomme ich auch ne Fehlermeldung: Zugriffsverletzung, etc...

Und falls dies funktionieren wird, x ist ja immer eine vorher festgelegte Zahl. Wie bekomme ich heraus in welcher Spalte ich den Titel angeklickt habe.
Sprich ist X = 1 oder 15?
Übergeben wird OnTitleClick() der Parameter Column. Column.Index ist die Spalte minus eins, d.h. die erste Spalte ist Column.Index = 0, 2. Spalte ist Column.Index = 1 usw.
  Mit Zitat antworten Zitat
EG045947

Registriert seit: 23. Mai 2022
13 Beiträge
 
#5

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 13:36
das ist alles korrekt, wenn die Columns manuell erstellt wurden. Sobald die von einer DB kommt, ist dies nicht mehr so.
Bei mir ist jede Spalte -1 und kein Text im Titel
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.596 Beiträge
 
Delphi 7 Professional
 
#6

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 13:41
Zeig' bitte mal den Quelltext, sonst müssen wir hier bis auf weiteres raten, was eventuell falsch sein könnte.

Mit Quelltext sieht man (mit ein bisserl Glück) das Problem sofort.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
637 Beiträge
 
Delphi XE6 Enterprise
 
#7

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 13:52
das ist alles korrekt, wenn die Columns manuell erstellt wurden. Sobald die von einer DB kommt, ist dies nicht mehr so.
Bei mir ist jede Spalte -1 und kein Text im Titel
Nicht nur manuell! Angenommen, das Grid heißt DBGrid1. Dann rufst Du nach dem Zuweisen der DataSource zum Gitter folgendes auf:
Code:
DBGrid1.Columns.State := csDefault;
Und - schwupps! - sind alle Spalten da und können wie o.a. angesprochen werden.
  Mit Zitat antworten Zitat
EG045947

Registriert seit: 23. Mai 2022
13 Beiträge
 
#8

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 15:06
hmmm, ich habe herumprobiert und es wird immer besser, ich geb gleich auf:

Jetzt kan ich die Titel der Spalten sehen aber nur die 1., 5.6.7.8., etc.
Bei der 2.3.4. ist der Index immer -1 und ich bekomme keinen Wert.

Was ist jetzt dass denn?
  Mit Zitat antworten Zitat
EG045947

Registriert seit: 23. Mai 2022
13 Beiträge
 
#9

AW: Dbgrid Titel leer

  Alt 23. Mai 2022, 16:04
Ich habe eine Access DB und dort mehrere Felder, die ich aber nicht alle in der DBgrid anzeigen möchte. Die Felder die ich ausblende werden woanders angezeigt.
Ziel ist es mit Column.fieldname den order by sql Befehl flexibel zu machen.

Klicke ich auf Nr kommt der Titel.
Art, Baureihe, Epoche und Hersteller gehen nicht. Da ist der Column.Index = -1
Ab Anzahl geht es wieder.
Ich habe auch schon alle Fields mit dem visible = false auskommentiert, dann sehe ich alle Felder, habe aber das Gleiche Problem. Also ist es das Visible=false nicht.
Im edit1.text Feld lasse ich mir den Titel der jeweiligen Spalte nur Anzeigen, zwecks Kontrolle.

Hier der Quell-Text:

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
FDConnection1.Params.Database:= ProgPath+'database.mdb';
FDConnection1.Params.DriverID:='MSAcc' ;
FDConnection1.Connected:=true;
FDQuery1.SQL.Clear;

FDQuery1.SQL.Add('select Nr, Art, Baureihe, Epoche, Hersteller, Anzahl, Preis, Rocrail, CS3, Eingemessen, Bild, Motor, Dekoder, Artikelnummer, URL, Zusatzinfo, Protokol, Adresse, Dateien, Kaufdatum from TabLoks ');
//FDQuery1.SQL.Add('order by Epoche');


FDQuery1.Active:=true;
FDQuery1.first;
DBGrid1.Columns.State := csDefault;

dbgrid1.Columns[5].Visible:=false;
dbgrid1.Columns[6].Visible:=false;
dbgrid1.Columns[7].Visible:=false;
dbgrid1.Columns[8].Visible:=false;
dbgrid1.Columns[9].Visible:=false;
dbgrid1.Columns[10].Visible:=false;

dbgrid1.Columns[14].Visible:=false;
dbgrid1.Columns[15].Visible:=false;
dbgrid1.Columns[16].Visible:=false;
dbgrid1.Columns[17].Visible:=false;
dbgrid1.Columns[18].Visible:=false;
dbgrid1.Columns[19].Visible:=false;

dbgrid1.Columns[0].Width:=150;
dbgrid1.Columns[1].Width:=150;
dbgrid1.Columns[2].Width:=150;
dbgrid1.Columns[3].Width:=150;
dbgrid1.Columns[4].Width:=150;
dbgrid1.Columns[5].Width:=150;

dbgrid1.Columns[11].Width:=150;
dbgrid1.Columns[12].Width:=150;
dbgrid1.Columns[13].Width:=150;

edit1.Text:=Column.FieldName;
end;
  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 18:54 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