![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Datensatz in einem DB-Grid markieren
Hallo Zusammen,
Ich möchte einen bestimmten Datensatz in einem DBGrid (TDBAdvGrid) selektieren. Ich dachte das müsste so gehen:
Delphi-Quellcode:
Ich bekomme ein "True" zurückgemeldet und es werden auch die richtigen Werte gefunden:
if Frame_Kunden1.Grid_Konzern.DataSource.DataSet.Locate('konzern_id', MySQL.Query_Standort.FieldByName('konzern_id').AsInteger, []) then begin
Frame_Kunden1.Grid_KonzernClickCell(Frame_Kunden1.Grid_Konzern, MySQL.Query_Konzern.FetchRows, 2); end;
Delphi-Quellcode:
Aber leider wird der Datensatz nicht im Grid markiert und auch nicht das OnClickCell-Event ausgeführt...
ShowMessage(MySQL.Query_Konzern.FieldByName('name').AsString);
ShowMessage(IntToStr(MySQL.Query_Konzern.FetchRows)); Hat jemand eine Idee, was ich anders machen muss? Vielen Dank Patrick |
AW: Datensatz in einem DB-Grid markieren
Um den Datensatz im Grid zu markieren, müsste doch in den Eigenschaften des Grids RowSelect (oder so ähnlich) auf True stehen und dann würde das Locate doch schon reichen um zum richtigen Datensatz zu springen, der dann autom. der gewählte sein müsste.
Was dann die OnClick-Prozedur angeht, finde ich es immer seltam, wenn sowas im Code aufgerufen werden muss. Wäre es nicht besser, das, was in der OnClick gemacht wird in eine andere Prozedur auszulagern, die dann sowohl von der OnClick-Prozedur, als auch von anderen Stellen im Code aus, direkt mit den richtigen Parametern aufgerufen werden kann? |
AW: Datensatz in einem DB-Grid markieren
Es gommt auf das Grid drauf an, ob und in welcher Richtung es sich ausrichtet.
Das kann es machen, aber muß es nicht. Bei einigen Grid-Komponenten ist sowas nicht eingebaut und bei Anderen kann man es (de)aktivieren. z.B.: Grid-Selection (OnSelect) => DataSet ausrichten DataSet-RecordIndex (OnAfterScroll) => Row im Grid selektieren Und wenn dein Code nichts macht, dann wird er entweder nicht ausgeführt oder das Locate trifft nichts, da diese ID nicht im DataSet vorkommt. :stupid: Zitat:
Am Ende kommt noch ein User auf die saudoofe Idee und arbeitet mit den Cursortasten anstatt mit der Maus zu klicken. |
AW: Datensatz in einem DB-Grid markieren
Hallo Zusammen,
die Eigenschaften des Grids RowSelect habe ich aktiviert. Und der Datensatz wird auch in Frame_Kunden1.Grid_Konzern.DataSource.DataSet.Loca te gefunden. Das habe ich geprüft. Aber auf das Grid hat das irgendwie keine Auswirkung. In dem Grid werden alle Datensätze angezeigt und der erste ist selektiert, obwohl das der falsche ist. Ich kann auch ausschließen, dass die Procedure gar nicht durchlaufen wird, auch das habe ich geprüft. Ich habe wirklich keine Idee, warum der gefundene Datensatz nicht markiert wird. Was die OnClickCell-Procedure angeht, nehme ich die Anregung gerne an und lagere sie aus und steuere sie mit dem OnSelect Event an. Vielen Dank Patrick |
AW: Datensatz in einem DB-Grid markieren
Schau mal bitte, ob Dein DBGrid sowas unterstützt:
Delphi-Quellcode:
DBGrid.SelectedRows.CurrentRowSelected := True;
Das könnte dann in etwa so aussehen:
Delphi-Quellcode:
if Frame_Kunden1.Grid_Konzern.DataSource.DataSet.Locate('konzern_id', MySQL.Query_Standort.FieldByName('konzern_id').AsInteger, []) then begin
Frame_Kunden1.Grid_Konzern.DataSource.DataSet.SelectedRows.CurrentRowSelected := True; Frame_Kunden1.Grid_KonzernClickCell(Frame_Kunden1.Grid_Konzern, MySQL.Query_Konzern.FetchRows, 2); end; |
AW: Datensatz in einem DB-Grid markieren
Hallo,
mit dem TDBAdvGrid habe ich auch so meine liebe Not gehabt. Ich habe das jetzt ersetzt durch TAdvStringGrid und mache die DB-Zugriffe selbst. |
AW: Datensatz in einem DB-Grid markieren
Hallo Zusammen,
soeben gelöst - ich hatte in dem nachfolgenden Procedure-Ablauf noch eine Änderung am DataSet, sodass das Locate überschrieben wurde. Jetzt passt es. Vielen Dank P.S.: Die OnCellClick wurde in ein OnSelectedCell und der Inhalt in eine separate Procedure ausgelagert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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