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/)
-   -   DBGrid Darstellung ändern? (https://www.delphipraxis.net/156917-dbgrid-darstellung-aendern.html)

khh 20. Dez 2010 14:40


DBGrid Darstellung ändern?
 
Hallo zusammen,
ich habe ein DBgrid welches lediglich zur Anzeige der DS dient.
Die Änderung des entsprechenden DS geschieht ausserhalb des Grid in Editfeldern.

Mit : Query.locate und Query.RecNo gehe ich zum jeweils nächsten Satz.


funktioniert auch alles, bis auf die Anzeige im Grid.
Die rutscht nach oben weg, wenn ich beim ersten Satz anfange zu ändern, und zwar solange bis nach unten alles ds im Grid angezeigt werden.

Ist das Grid irgendwie dahingehend zu beienflussen, dass die DS erst dann "nach oben rutschen", wenn der letzte unten sichtbare DS verlassen wird?

Optimal wäre noch eine Markierung des aktuellen Satzes, ohne dass das Grid den Fokus haben muss.

Danke Gruss KHH

skh 20. Dez 2010 15:20

AW: DBGrid Darstellung ändern?
 
Hallo,

ich denke mit Query1.Next wäre der NÄCHSTE Satz leichter zu ereichen.

Das Problem mit der Anzeige habe ich nicht ganz verstanden.

khh 20. Dez 2010 15:38

AW: DBGrid Darstellung ändern?
 
Zitat:

Zitat von skh (Beitrag 1069583)
Hallo,

ich denke mit Query1.Next wäre der NÄCHSTE Satz leichter zu ereichen.

Das Problem mit der Anzeige habe ich nicht ganz verstanden.

Ok, next geht natürlich auch, zu was einfach wenns umständlich auch geht ;-)

Nochmal zur Anzeige:
ich postioniere ZB per Mausklick auf den ersten Satz im Grid und übernehme dadurch die zu ändernden Feldinhalte in ein Editfeld.
im onkeydown dieses Feldes speichere ich bei VK_RETURN den geänderten Wert und gehe nit "NEXT" zum nächsten Satz.
Dadurch rutscht der gerade geänderte Satz nach oben aus dem Grid und die Änderung ist nicht mehr zu sehen :-(

Um meine Änderung zu sehen muss ich also nach oben scrollen.

Postitioniere ich aber auf irgendeinem Satz in der Mitte des Grid, rutscht der gesamte Inhalt erst bei Erreichen des unteren Rand nach oben, so dass der gerade geänderte Satz weiterhin zu sehen ist.

Ich möchte also errecihen, dass ich auch beim Ändern des ersten Satzen diesen noch im Grid sehen kann, bis dfas untere Ende des Grid erreicht ist.

skh 20. Dez 2010 16:33

AW: DBGrid Darstellung ändern?
 
wieso liest du eigentlich den nächsten DS, der steht doch schon im Dbgrid.
Einfach im Dbgrid den zu ändernden DS anklicken, ändern in den Edit-Feldern und dann speichern.
Ich arbeite hier meistens mit einem Navigator...

khh 20. Dez 2010 16:41

AW: DBGrid Darstellung ändern?
 
Zitat:

Zitat von skh (Beitrag 1069604)
wieso liest du eigentlich den nächsten DS, der steht doch schon im Dbgrid.
Einfach im Dbgrid den zu ändernden DS anklicken, ändern in den Edit-Feldern und dann speichern.
Ich arbeite hier meistens mit einem Navigator...

wiel ich zum Ändern der Werte keine DBEdits, sondern normale Edits verwende.

Die dahinter liegenden und nebenbei ablaufenden Funktionen sind zu komplex um mit DB-Verküpfungen und Navigator zurecht zu kommen.
(zumindest hab ichs nicht hinbekommen ;-))
Es liegen recht komplexe Preisfindungsroutinen dahinter, die auf diverse zusätzliche DB-Tabellen und Einstellungen zugreifen)

Das einzige Datacontrol ist das DBGrid

EarlyBird 20. Dez 2010 20:06

AW: DBGrid Darstellung ändern?
 
eventuell kannst Du dein Grid vom TCustomGrid ableiten und dann auf die Eigenschaft TopRow zugreifen
Mit SettopRow kannst Du dann die Oberste Zeile beeinflussen.
Code:
Type
MyTDBGrid = class(TCustomGrid)
public
    property TopRow;
    property VisibleRowCount;
    procedure SetTopRow(Value: Longint);
End;

procedure MyTDBGrid.SetTopRow(Value: Longint) ;
begin
   inherited;
end;

procedure TForm1.ereignisdeinerwahl(Sender: TObject);
var
    TopRowNo : Integer;
    VisibleRows : Integer;
begin
    TopRowNo := MyTDBGrid(yourTDBGrid1).TopRow;
    VisibleRows := MyTDBGrid(yourTDBGrid1).VisibleRowCount;
end;
Der Code ist ungetestet
Nur so als Denkanstoß

khh 21. Dez 2010 06:42

AW: DBGrid Darstellung ändern?
 
Zitat:


Der Code ist ungetestet
Nur so als Denkanstoß

danke dir, werd ich ausprobieren


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