Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   DBGrids - Alternative zu RecNo? (https://www.delphipraxis.net/191116-dbgrids-alternative-zu-recno.html)

Uwe Raabe 12. Dez 2016 13:19

AW: DBGrids - Alternative zu RecNo?
 
Zitat:

Zitat von himitsu (Beitrag 1355914)
OK, dann war der Name DataLink etwas missverständlich.

Eigentlich sind TDataLink ja nur Links zum DataSet/DataRecord und kennen das Grid nicht.

In diesem Fall handelt es sich aber um einen
Delphi-Quellcode:
TGridDataLink
und der kennt wiederum sein
Delphi-Quellcode:
TCustomDBGrid
.

Rabenrecht 14. Dez 2016 08:26

AW: DBGrids - Alternative zu RecNo?
 
Ok, hatte das RecNo missverstanden.

Jetzt habe ich es hinbekommen die Zeilen alternierend einzufärben.

Dabei tauchte leider ein weiteres Problem auf: die Einfärbung der Zeilen "übermalt" die blaue Hinterlegung der Zeile, dessen Zelle gerade ausgewählt ist.

Hier der wesentliche Quelltext:

Delphi-Quellcode:
procedure MeinVonTDBGridAbgeleitetesGrid.DrawColumnCell(const Rect: TRect; DataCol: Integer;
  Column: TColumn; State: TGridDrawState);
var
  RowNo : Integer;
begin
  RowNo := DataSource.DataSet.RecNo;
  if not Odd(RowNo) then
    Canvas.Brush.Color := myRowColor;
  else
    Canvas.Brush.Color := Color;
 
  DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
Wie lässt sich das vermeiden?

borstenei 14. Dez 2016 08:53

AW: DBGrids - Alternative zu RecNo?
 
Ich hatte das mal so gemacht:

Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TDBGrid(Sender), Canvas do
begin
if ADOTable1.RecNo mod 2 = 0  then
Brush.Color:=clSilver;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
...aber auch hier wird die blaue Markierung übermalt , was mich nicht gestört hat.
und das with nicht beachten , heute bin ich etwas schlauer...:-D

Uwe Raabe 14. Dez 2016 09:01

AW: DBGrids - Alternative zu RecNo?
 
Zitat:

Zitat von Rabenrecht (Beitrag 1356058)
Wie lässt sich das vermeiden?

Check doch einfach auf
Delphi-Quellcode:
gdRowSelected in State
und lass in dem Fall die Finger von
Delphi-Quellcode:
Canvas.Brush.Color
.

Rabenrecht 14. Dez 2016 15:01

AW: DBGrids - Alternative zu RecNo?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1356067)
Zitat:

Zitat von Rabenrecht (Beitrag 1356058)
Wie lässt sich das vermeiden?

Check doch einfach auf
Delphi-Quellcode:
gdRowSelected in State
und lass in dem Fall die Finger von
Delphi-Quellcode:
Canvas.Brush.Color
.

Das hatte leider keinen Effekt. Wie es scheint, wird gdRowSelected überhaupt nicht gesetzt. :(

Uwe Raabe 14. Dez 2016 15:08

AW: DBGrids - Alternative zu RecNo?
 
Zitat:

Zitat von Rabenrecht (Beitrag 1356131)
Zitat:

Zitat von Uwe Raabe (Beitrag 1356067)
Zitat:

Zitat von Rabenrecht (Beitrag 1356058)
Wie lässt sich das vermeiden?

Check doch einfach auf
Delphi-Quellcode:
gdRowSelected in State
und lass in dem Fall die Finger von
Delphi-Quellcode:
Canvas.Brush.Color
.

Das hatte leider keinen Effekt. Wie es scheint, wird gdRowSelected überhaupt nicht gesetzt. :(

Kommt halt auf die Optionen an. Was ist mit gdSelected? Schau doch mal im Debugger, was in dem Fall drin steht.

ConnorMcLeod 14. Dez 2016 15:28

AW: DBGrids - Alternative zu RecNo?
 
Delphi-Quellcode:
  if ([] = (State * [gdFocused, gdSelected])) then
  begin
    // clever settings go here
  end; // if

Slipstream 16. Dez 2016 03:32

AW: DBGrids - Alternative zu RecNo?
 
Zitat:

Zitat von Rabenrecht (Beitrag 1355796)
Hallo
Gibt es eine Alternative zu RecNo um die aktuelle Zeile zb. in einem DrawColumnCell-Ereignis zu bestimmen?

Aus diesem und anderen Gründen bevorzuge ich das TjvDBgrid aus den Jedi-Komponenten. Das hat nämlich die Eigenschaft AlternateRowColor, wo ich eine Farbe für den alternativen Hintergrund angeben kann. Zusätzlich gibts dann noch die Eigenschaft AlternateRowFontColor, wo ich die Schriftfarbe festlegen kann. Danach zeigt das Jedi-DBGrid seine Zeilen in zwei sich abwechselnden Farben an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 Uhr.
Seite 2 von 2     12   

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