Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi In einem Grid auf den nächsten selektierten Datensatz gehen (https://www.delphipraxis.net/188457-einem-grid-auf-den-naechsten-selektierten-datensatz-gehen.html)

Walter Landwehr 5. Mär 2016 12:21

In einem Grid auf den nächsten selektierten Datensatz gehen
 
Hallo,
ich habe in einem TcxGrid von DevExpress mehrere Datensätze selektiert. Nun möchte ich per Klick auf
1. den ersten selektierten ... (First)
2. den nächsten selektierten ... (Next)
3. den vorherigen selektierten ... (Prior)
4. den letzten selektierten Datensatz anspringen. (Last)

Hat jemand einen Tipp wie das zu machen ist.

vagtler 5. Mär 2016 12:23

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
Was meinst Du mit "anspringen"?

Walter Landwehr 5. Mär 2016 12:31

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
Naja den Datensatz zum aktiven machen.

vagtler 5. Mär 2016 12:34

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
http://stackoverflow.com/questions/3...a-field-column

In Deinem Fall sind es die SelectedRecords (siehe auch https://www.devexpress.com/Support/C...n/Details/A302).

Oder was willst Du genau erreichen?

Walter Landwehr 5. Mär 2016 13:04

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
Na ich dachte das hatte ich klar ausgedrückt. Ich will in einem Grid, indem mehrere Datensätze selektiert sind, entweder auf den ersten selektierten Datensatz gehen, oder den nächsten slektierten usw..

nahpets 5. Mär 2016 13:56

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
Man nehme vier Buttons:

1. für den ersten Datensatz
2. für einen Satz zurück
3. für einen Satz vor
4. für letzten Satz.

Beim DBGrid der Jedis gibt es dann folgende Eigenschaften bzw. Methoden:

GotoSelection(Variabel mit der Satznummer / dem Index)

SelectedRows.Count, der Anzahl der ausgewählten Sätze.

Für den 1. Satz macht man dann ein GoToSelection(0).
Zum letzten Satz geht's mit GoToSelection(SelectedRows.Count - 1)

Dann benötig man eine Variabel, in der man sich die Satznummer des aktuellen Satzes merkt.

Geht man auf den ersten Satz, so setzt man diese Variabel auf 0, beim letzten Satz auf SelectedRows.Count - 1.

Geht man einen Satz zurück, setzt man diese Variabel auf Variabel - 1, geht man einen Satz vor auf Variabel + 1.

Anschließend ruft man noch GotoSelection(Variabel) auf und sollte am gewünschten Ziel sein.

ungetesteter, nur so hingedaddelter, Quelltext:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    fSatzNummer : Integer;
...
    btnFirst: TButton;
    btnPrior: TButton;
    btnNext : TButton;
    btnLast : TButton;

...

// Diese Ereignisroutine allen Buttons auf OnClick zuweisen:
procedure TForm1.BtnSelect(Sender: TObject);
begin
  if Sender = btnFirst then fSatzNummer := 0
  else if Sender = btnPrior then Dec(fSatzNummer)
  else if Sender = btnNext then Inc(fSatzNummer)
  else if Sender = btnLast then fSatzNummer := dbGrid.SelectedRows.Count - 1;
  dbGrid.GotoSelection(fSatzNummer);
end;

vagtler 5. Mär 2016 14:05

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
Zitat:

Zitat von Walter Landwehr (Beitrag 1332164)
Na ich dachte das hatte ich klar ausgedrückt. Ich will in einem Grid, indem mehrere Datensätze selektiert sind, entweder auf den ersten selektierten Datensatz gehen, oder den nächsten slektierten usw..

Und wo ist - unter Berücksichtigung der genannten Links - jetzt genau das Problem?

EarlyBird 5. Mär 2016 20:42

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
die Selektierten Datensätze findest Du in der Liste
Grid1DBTableView1.Controller.SelectedRecords

Delphi-Quellcode:
Grid1DBTableView1.Controller.SelectedRecords[0].Focused := True;


Damit kommst Du sicherlich schon weiter

Walter Landwehr 6. Mär 2016 08:36

AW: In einem Grid auf den nächsten selektierten Datensatz gehen
 
Yes so geht es mit den DevExpress TcxGrid.

Delphi-Quellcode:
procedure TfrmSerienbrief.btnFirstClick(Sender: TObject);
begin
  if Sender = btnFirst then fSatzNummer := 0
  else if Sender = btnPrior then Dec(fSatzNummer)
  else if Sender = btnNext then Inc(fSatzNummer)
  else if Sender = btnLast then fSatzNummer := GridView.Controller.SelectedRowCount - 1;
  if (fSatzNummer > GridtView.Controller.SelectedRowCount - 1) then
    Dec(fSatzNummer);
  if (fSatzNummer < 0) then
    fSatzNummer := 0;
  GridView.Controller.SelectedRecords[fSatzNummer].Focused := True;
end;
Vielen Dank an alle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 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