Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Delphi 12 - DBGrid RowSelect - Marker erhalten (https://www.delphipraxis.net/217606-delphi-12-dbgrid-rowselect-marker-erhalten.html)

Ralphetto 31. Jul 2025 01:16

Datenbank: sqlite • Version: 3.50.2.0 • Zugriff über: zeosdbo

Delphi 12 - DBGrid RowSelect - Marker erhalten
 
In einem TPageControl gibt es

- das TTabSheet "tsSammel", das ein DBGrid anzeigt
- das TTabSheet "tsEinzel", das u.a. die TDBEdits anzeigt, um den aktuellen Datensatz zu bearbeiten

Beim ersten Anzeigen des Fensters wird im TTabSheet "tsSammel" im DBGrid der erste Datensatz markiert (dgRowSelect ist im Grid aktiviert).

Mit einem Doppeklick (OnDblClick) auf einen Datensatz im DBGrid wird in das TabSheet "tsEinzel" gewechselt. (Dort ist die Ansicht der Inhalte der TDBEdits oder Änderungen am aktuellen Datensatz möglich.)

Schießt der Anwender das TabSheet "tsEinzel", gelangt er wieder in das TabSheet "tsSammel" zurück. Hier wird wieder die "Sammelanzeige" der Datensätze angezeigt.

Das Problem: Die Markierung (RowMarker) des aktuellen Datensatzes (dbgRowSelect im DBGrid) ist nicht aktiv - es wird keine aktuelle Zeile im Grid angezeigt. Es ist kein Datensatz markiert.

Wenn der Anwender aus der Einzelanzeige in die Sammelanzeige zurückkehrt, wäre es sehr hilfreich, wenn er den aktuell bearbeiteten Datensatz im Grid als markiert erkennen würde.

Vielen Dank für jede Hilfe!

Delphi.Narium 31. Jul 2025 01:37

AW: Delphi 12 - DBGrid RowSelect - Marker erhalten
 
Im Objektinspektor beim DBGrid das Ereignis OnDrawColumnCell zuweisen:
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol: Integer;
  Column: TColumn; State: TGridDrawState);
begin
  // Aktiven Datensatz prüfen
  if DBGrid1.DataSource.DataSet.RecNo = DBGrid1.Row then
    DBGrid1Canvas.Brush.Color := clSkyBlue // Deine Wunschfarbe
  else
    DBGrid1.Canvas.Brush.Color := clWhite;
  // Standard Zeichnung aufrufen
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Jasocul 31. Jul 2025 05:35

AW: Delphi 12 - DBGrid RowSelect - Marker erhalten
 
In den Options für TDBGrid gibt es dgAlwaysShowSelection. Das sollte normalerweise ausreichen.

himitsu 31. Jul 2025 09:06

AW: Delphi 12 - DBGrid RowSelect - Marker erhalten
 
Genau, ist wirklich keiner Selektiert/Fokusiert, oder ist das nur nicht sichtbar?
Links im Grid siehst du eine Index-Spalte, wo es einen Pfeil gibt, beim fokusierten/aktiven Datensatz.

Standard leider nur sichtbar, wenn sich der Fokus im Grid befindet.
Lösung siehe Jasocul. (selbstmalen ala Delphi.Narium, ist da nicht unbedingt nötig)

Ralphetto 1. Aug 2025 15:45

AW: Delphi 12 - DBGrid RowSelect - Marker erhalten
 
Ich bin aber auch wirklich dämlich:

dgAlwaysShowSelection macht genau, was es soll. Vielen, vielen Dank!

Ralph


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