Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi XE5: Eingabereihenfolge DBGrid ändern (https://www.delphipraxis.net/179941-xe5-eingabereihenfolge-dbgrid-aendern.html)

Kralle 12. Apr 2014 09:15

XE5: Eingabereihenfolge DBGrid ändern
 
Moin,

wenn ich durch den 'DBNavigator' eine neue Zeile im 'DBGrid' erzeuge, dann ist die immer die oberste.
Ich kann also nicht 1,2,3 eingeben weil es zu 3,2,1 werden wird.
Wie bringe ich den Navigator bzw das Grid dazu neue Zeilen unten anzuhängen?

Gruß HEiko

Uwe Raabe 12. Apr 2014 09:47

AW: XE5: Eingabereihenfolge DBGrid ändern
 
Zitat:

Zitat von Kralle (Beitrag 1255402)
wenn ich durch den 'DBNavigator' eine neue Zeile im 'DBGrid' erzeuge, dann ist die immer die oberste.
Ich kann also nicht 1,2,3 eingeben weil es zu 3,2,1 werden wird.
Wie bringe ich den Navigator bzw das Grid dazu neue Zeilen unten anzuhängen?

Hat das nicht eher was mit dem aktiven Index des darunterliegenden Datasets zu tun?

himitsu 12. Apr 2014 10:38

AW: XE5: Eingabereihenfolge DBGrid ändern
 
Oder des Grids, welche die Daten selber und unabhöngig vom DataSet sortieren oder gar gruppieren können.

DBNavigator macht ein Insert
und im DataSet selber hängt die Einfügeposition vom Befehl ab.
Insert > an aktueller Position einfügen
Append > ans Ende anhängen (vorallem bei Memory-Datasets, ala TClientDataSet, ist bei vielen Inserts ein Append wesentlich schneller)

Du kannst aber z.B. im BeforInsert, oder im passenden Event des Navigators, das Standardverhalten ändern/abbrechen und ein Eigenes implementieren.

Kralle 12. Apr 2014 13:19

AW: XE5: Eingabereihenfolge DBGrid ändern
 
Hallo,

Zitat:

Zitat von himitsu (Beitrag 1255408)
DBNavigator macht ein Insert
und im DataSet selber hängt die Einfügeposition vom Befehl ab.
Insert > an aktueller Position einfügen
Append > ans Ende anhängen (vorallem bei Memory-Datasets, ala TClientDataSet, ist bei vielen Inserts ein Append wesentlich schneller)

Leider gibt es keinen Switch Insert/Append.

Zitat:

Zitat von himitsu (Beitrag 1255408)
Du kannst aber z.B. im BeforInsert, oder im passenden Event des Navigators, das Standardverhalten ändern/abbrechen und ein Eigenes implementieren.

Ich könnte es ändern/abbrechen wenn ich wüsste wie man das macht.
Aber wie verhindere ich dass das Insert ausgeführt wird und anstatt ein Append ausgeführt wird?
Ich könnte zwar den Navigator vergessen und einzelne Button nehmen, aber wofür gibt es eine Komponente wenn man sie nicht nutzt.

Gruß HEiko

Uwe Raabe 12. Apr 2014 17:59

AW: XE5: Eingabereihenfolge DBGrid ändern
 
Zitat:

Zitat von Kralle (Beitrag 1255421)
Ich könnte es ändern/abbrechen wenn ich wüsste wie man das macht.
Aber wie verhindere ich dass das Insert ausgeführt wird und anstatt ein Append ausgeführt wird?

Vielleicht so:

Delphi-Quellcode:
procedure TForm294.DBNavigator1BeforeAction(Sender: TObject; Button:
    TNavigateBtn);
begin
  if Button = nbInsert then begin
    (Sender as TDBNavigator).DataSource.DataSet.Append;
    Abort;
  end;
end;

Kralle 13. Apr 2014 07:41

AW: XE5: Eingabereihenfolge DBGrid ändern
 
Hallo Uwe,

Zitat:

Zitat von Uwe Raabe (Beitrag 1255453)
Delphi-Quellcode:
procedure TForm294.DBNavigator1BeforeAction(Sender: TObject; Button:
    TNavigateBtn);
begin
  if Button = nbInsert then begin
    (Sender as TDBNavigator).DataSource.DataSet.Append;
    Abort;
  end;
end;

Danke.

Gruß HEiko


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