AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Spalten in einem DBGrid verschieben und auch sortieren!
Thema durchsuchen
Ansicht
Themen-Optionen

Spalten in einem DBGrid verschieben und auch sortieren!

Ein Thema von m-werk · begonnen am 17. Sep 2002 · letzter Beitrag vom 26. Jun 2005
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#11
  Alt 17. Sep 2002, 21:38
Hi m-werk,

IMHO: in my humble opinion.

Was das Speichern angeht, könntest du ja die Property Cols[] abspeichern und neu laden.

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12
  Alt 17. Sep 2002, 21:39
IMHO = in my humble opinion = in meiner bescheiden Meinung

Keine Ahnung wie so eine Abfrage auszusehen hat. Von Datenbanken habe ich keinen Schimmer. Ich weiß nur so viel, dass das DBGrid nicht dazu da ist Daten zu manipulieren, zu filtern etc., dazu gehört auch das Sortieren. Bitte korrigieren, wenn ich falsch liegen sollte, aber ich bin mir hier ziemlich sicher.

Die Abfrage hängt auch von der Datenbank ab: mySQL, BDE, Paradox. Access, ...
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#13
  Alt 17. Sep 2002, 21:42
Aua, es handelt sich, um ein DB- kein StringGrid.
Bitte mein obiges Posting vergessen...

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#14
  Alt 18. Sep 2002, 06:56
Hallo m-werk,

zunächst einmal zum Thema Sortierung:

Es gibt da grundsätzlich zwei Möglichkeiten. Die erste ist das Arbeiten mit Indices. Dazu legst du für alle möglichen Sortierungen Sekundärindices an. Dann wählst du einfach den gewünschten Index aus und die Sortierung funktioniert automatisch.

Die zweite Möglichkeit ist eine Abfrage zu erstellen in der Form:

Code:
SELECT * FROM Kunde ORDER BY Vorname DESC
Diese Abfrage packst du in eine TQuery Kompo und führst diese durch "Open" aus.

Zum Thema "Speichern der Reihenfolge der Felder". Dazu würde ich die Eigenschaft "Index" der TField Objekte auslesen und in einer Ini-Datei speichern. Beim Starten der Anwednung liest du diese Werte wieder aus und weist sie der Index-Eigenschaft wieder zu.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#15
  Alt 18. Sep 2002, 10:35
Danke für den Tip beim Sortieren. Ich werde die 2. Variante nehmen.

Mit dem Speichern der Spaltenpositionen komm ich nicht so zurecht. Kannst du mir dabei bitte helfen?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#16
  Alt 18. Sep 2002, 11:54
Hallo m-werk,

sowohl TQuery als auch TTable sind (indirekt) von TDataSet abgeleitet. Dort ist die Eigenschaft Fields definiert.

Je nachdem wann du die Reihenfolge der Felder im Grid speichern willst, könntest du in der entsprechenden Ereignismethode folgendes schreiben:

Code:
var
  Ini        : TIniFile;
  i          : Integer;
  reihenfolge : String;
 
...
try
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName), '.INI');
  reihenfolge := '';
  for i := 0 to MyTable.FieldCount-1 do
    reihenfolge := reihenfolge+IntToStr(MyTable.Fields[i].Index)+';'

  Ini.WriteString('Grid', 'Reihenfolge', reihenfolge);
  Ini.Free;
except
...
Das Einlesen läuft analog, z.B. in der OnActivate Methode.

Ist zwar nicht getestet, sollte aber funktionieren.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#17
  Alt 20. Sep 2002, 17:58
OK, das mit dem Speichern habe ich jetzt hinbekommen. Funktioniert tatellos.

Es ist nur noch ein Problem:
Im DBGrid müssen erst Datensätze stehen, dannach kann ich die Spalten verschieben und die Position wird dann erst in der INI gespeichert.
Vielleicht könnte man das auch dann machen, wenn keine Daten im Grid stehen.

Aber nun zum nächsten.
Wie rufe ich die Position der Spalten beim öffnen des Formulares wieder auf, die in der INI stehen?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18
  Alt 20. Sep 2002, 18:22
Sollte eigentlich. Aber dein gesamter try-Block ist Mist. Bei einem Fehler wird Ini nicht wieder freigegeben usw.

So ist es besser:

Code:
[b]procedure[/b] TKundenDruckMenue.FormClose(Sender: TObject;
[b]var[/b] Action: TCloseAction);
[b]var[/b]
  Ini : TIniFile;
  i : Integer;
  reihenfolge : [b]String[/b];
[b]begin[/b]
  reihenfolge := '';
  [b]for[/b] i := 0 [b]to[/b] DBGrid1.FieldCount-1 [b]do[/b]
    reihenfolge := reihenfolge+IntToStr(DBGrid1.Fields[i].Index)+';';
  Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+ 'Einstellungen.ini');
  [b]try[/b]
    Ini.WriteString('Grid', 'Reihenfolge', reihenfolge);
  [b]finally[/b]
    Ini.Free;
  [b]end[/b];
[b]end[/b];
Eventuell behebt das auch dein Poblem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#19
  Alt 20. Sep 2002, 18:29
Danke für die verbesserung, aber das Problem ist damit nicht behoben!
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20
  Alt 20. Sep 2002, 18:34
Wärend ich gepostet habe, hast du doch geschrieben, dass es jetzt gehen würde oder was oder wie oder wo oder...
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 03:22 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