AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrids - Alternative zu RecNo?

Ein Thema von Rabenrecht · begonnen am 9. Dez 2016 · letzter Beitrag vom 16. Dez 2016
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.631 Beiträge
 
Delphi 12 Athens
 
#1

AW: DBGrids - Alternative zu RecNo?

  Alt 12. Dez 2016, 12:17
Jain.

Das liefert die Info, ob der aktuell selektierte Record ODD ist.
Aber beim Zeichnen muß man sich diese Daten aus dem DataController/Cache des Grids holen, denn zum Anzeigen wird und kann nicht ständig das DataSet gescrollt werden.
Das stimmt jetzt aber nicht so ganz. Der DataLink.ActiveRecord gibt die relative Nummer innerhalb des Grid-Buffers an. Insbesondere wird der Wert innerhalb der Zeichenroutine auf die aktuelle Zeilennummer gesetzt FDataLink.ActiveRecord := ARow; und danach wieder hergestellt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.348 Beiträge
 
Delphi 12 Athens
 
#2

AW: DBGrids - Alternative zu RecNo?

  Alt 12. Dez 2016, 13:11
OK, dann war der Name DataLink etwas missverständlich.

Eigentlich sind TDataLink ja nur Links zum DataSet/DataRecord und kennen das Grid nicht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.631 Beiträge
 
Delphi 12 Athens
 
#3

AW: DBGrids - Alternative zu RecNo?

  Alt 12. Dez 2016, 13:19
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 TGridDataLink und der kennt wiederum sein TCustomDBGrid .
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rabenrecht

Registriert seit: 9. Dez 2016
79 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: DBGrids - Alternative zu RecNo?

  Alt 14. Dez 2016, 08:26
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?
  Mit Zitat antworten Zitat
borstenei

Registriert seit: 11. Nov 2011
121 Beiträge
 
#5

AW: DBGrids - Alternative zu RecNo?

  Alt 14. Dez 2016, 08:53
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...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.631 Beiträge
 
Delphi 12 Athens
 
#6

AW: DBGrids - Alternative zu RecNo?

  Alt 14. Dez 2016, 09:01
Wie lässt sich das vermeiden?
Check doch einfach auf gdRowSelected in State und lass in dem Fall die Finger von Canvas.Brush.Color .
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rabenrecht

Registriert seit: 9. Dez 2016
79 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: DBGrids - Alternative zu RecNo?

  Alt 14. Dez 2016, 15:01
Wie lässt sich das vermeiden?
Check doch einfach auf gdRowSelected in State und lass in dem Fall die Finger von Canvas.Brush.Color .
Das hatte leider keinen Effekt. Wie es scheint, wird gdRowSelected überhaupt nicht gesetzt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.631 Beiträge
 
Delphi 12 Athens
 
#8

AW: DBGrids - Alternative zu RecNo?

  Alt 14. Dez 2016, 15:08
Wie lässt sich das vermeiden?
Check doch einfach auf gdRowSelected in State und lass in dem Fall die Finger von 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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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