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 DBGrid Navigation unterscheidet sich je nach gewählter Option (https://www.delphipraxis.net/201599-dbgrid-navigation-unterscheidet-sich-je-nach-gewaehlter-option.html)

Maa83 6. Aug 2019 11:52

DBGrid Navigation unterscheidet sich je nach gewählter Option
 
Hallo,

ich habe ein kleines Problem.

Ich möchte im DBGrid die komplette Zeile einfärben wenn jemand auf eine Zelle klickt.
Dazu gibt es die Option dgRowSelect.

Wenn ich diese Option setzt habe ich optisch den richtigen Effekt.
Wenn ich nun aber mit den Cursor-Tasten nach rechts oder links möchte werde ich nach oben oder nach unten im Grid navigiert.

Dieses Verhalten ist für mich nicht brauchbar.

Wenn ich das dgRowSelect weglasse und stattdessen dgMultiSelect wähle, wird optisch auch die gesamte Zeile markiert das Verhalten der Cursortasten ist dann jedoch korrekt. D.h. nach rechts ist auch nach rechts und nicht nach unten im Grid.

Ich möchte jedoch nicht zulassen, dass der Anwender mehrere Zeilen markieren kann. Ist also auch nicht das was ich brauche.

Kann mir hier jemand weiterhelfen? Kann doch eigentlich nicht sein, dass ich für soetwas eine CustomDraw-Routine schreiben muss.

hhcm 6. Aug 2019 12:23

AW: DBGrid Navigation unterscheidet sich je nach gewählter Option
 
Zitat:

Zitat von Maa83 (Beitrag 1439722)
Kann doch eigentlich nicht sein, dass ich für soetwas eine CustomDraw-Routine schreiben muss.

Mir wäre nichts anderes bekannt, zumindest nicht beim normalen DBGrid. Beim z.B TMS Grid geht das etwas einfacher
Aber beim VCL DBGrid musst du´s über DrawColumnCell machen
z.B so.


Delphi-Quellcode:
type
  TGridHack = Class(TCustomDBGrid);

...

procedure TFormX.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 with TGridHack(Sender) do
 begin
     if DataLink.ActiveRecord = Row - 1 then
     begin
        Canvas.Brush.Color := clHighlight;
        Canvas.Font.Color := clHighlightText;
     end;

     DefaultDrawColumnCell(Rect, DataCol, Column, State);
 end;

end;

Maa83 6. Aug 2019 13:32

AW: DBGrid Navigation unterscheidet sich je nach gewählter Option
 
Danke für den Hinweis. Werde ich dann wohl machen müssen.


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