Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Dbgrid Titel leer (https://www.delphipraxis.net/210657-dbgrid-titel-leer.html)

EG045947 23. Mai 2022 16:06

AW: Dbgrid Titel leer
 
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?

Uwe Raabe 23. Mai 2022 16:13

AW: Dbgrid Titel leer
 
Zitat:

Zitat von EG045947 (Beitrag 1506259)
Was ist jetzt dass denn?

Genau das steht in den Sourcen die du uns immer noch vorenthältst!

EG045947 23. Mai 2022 17:04

AW: Dbgrid Titel leer
 
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;

Uwe Raabe 23. Mai 2022 17:18

AW: Dbgrid Titel leer
 
Das ist definitiv zu viel Code in dem TitleClick Event, der eigentlich nur einmal aufgerufen werden muss. Mach die Abfrage an anderer Stelle und ändere im TitleClick lediglich die Sortierung.
Delphi-Quellcode:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
  FDQuery1.IndexFieldNames := Column.FieldName;
end;

EG045947 23. Mai 2022 17:28

AW: Dbgrid Titel leer
 
super! Und wie kann ich die Sortierreihenfolge ändern? A-Z und Z-A? ode 1-9 oder 9-1?

Andreas13 23. Mai 2022 17:43

AW: Dbgrid Titel leer
 
Hallo EG045947,
Du kannst Deinen Quellcode etwas übersichtlicher formatieren, wenn Du das Delphi-Symbol (= gelber Helm mit dem roten Kamm) vom Menü direkt über dem Editorfenster benutzt. Alternaiv dazu kannst Du den Quellcode zwischen [DELPHI] und [/DELPHI] setzten. Das geht übrigens auch nachträglich, wenn Du Deinen ersten Beitrag editierst. Damit hilfst Du zugleich künftigen Interessenten, die aus Deinem Fall etwas lernen wollen.

Dann ist es auch für uns einfacher, Dir gezielt zu helfen. :-D

Gruß, Andreas

Uwe Raabe 23. Mai 2022 17:56

AW: Dbgrid Titel leer
 
Zitat:

Zitat von EG045947 (Beitrag 1506266)
super! Und wie kann ich die Sortierreihenfolge ändern? A-Z und Z-A? ode 1-9 oder 9-1?

Für Descending Order setzt du einfach ein
Delphi-Quellcode:
+ ':D'
dahinter.
Delphi-Quellcode:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
  FDQuery1.IndexFieldNames := Column.FieldName + ':D';
end;

EG045947 23. Mai 2022 18:05

AW: Dbgrid Titel leer
 
Super! es geht! Und so was von einfach!

EG045947 28. Mai 2022 10:30

AW: Dbgrid Titel leer
 
leider wird nun die Sortierung nicht so schön durchgeführt.
Er zählt jetzt: 1, 10, 12,2, 20, etc.

Gibt es einen Parameter für eine komplette Sortierung? 1,2,3,4,5,6, etc. Abcd...

himitsu 28. Mai 2022 10:48

AW: Dbgrid Titel leer
 
Sag nicht, dass der FeldTyp sowas wie string ist.
Für eine Stringsortierung, ist das vollkommen richtig so.

Willst du es numerisch sortiert haben, dann müsstes du z.B. einen Integer als Typen für den Vergleich haben.



Aber da du nicht die nötigen Infos rausrückst, kann dir niemand genauer helfen. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 2 von 3     12 3      

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