Delphi-PRAXiS
Seite 2 von 3     12 3      

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 TDBAdvGrid - Zeilen einfärben (https://www.delphipraxis.net/129411-tdbadvgrid-zeilen-einfaerben.html)

Eppos 18. Feb 2009 21:36

Re: TDBAdvGrid - Zeilen einfärben
 
Danke funktioniert perfekt...
habe jetzt nur das Problem, die daten in das grid zu schreiben...

Folgendes habe ich versucht:

Delphi-Quellcode:
var aCell : String;
begin
  aCell := Grid1.SelectedField.AsString;

  If ((Query1.FieldByName( 'SAT' ).AsInteger > 0) and (aCol > 0) and (aRow >0)) then begin
    Grid1.Canvas.Brush.Color := Query1.FieldByName( 'SAT' ).AsInteger;
  end else begin
    Grid1.Canvas.Brush.Color := clWhite;
  end;
  Grid1.canvas.FillRect( Rect );

  Grid1.SelectedField.Text := aCell;
aber das funktioniert nicht, er bringt einen Fehler, das das Dataset nicht editierbar ist...

Gibts es einen anderen weg?

DeddyH 18. Feb 2009 21:38

Re: TDBAdvGrid - Zeilen einfärben
 
Kannst Du mal die ganze Methode im Zusammenhang posten? Das scheint ein Kontext-Problem zu sein.

Eppos 18. Feb 2009 21:45

Re: TDBAdvGrid - Zeilen einfärben
 
Delphi-Quellcode:
procedure TfrmMain.Grid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var aCell : String;
begin
  aCell := Grid1.SelectedField.AsString;

  If ((Query1.FieldByName( 'SAT' ).AsInteger > 0) and (aCol > 0) and (aRow >0)) then begin
    Grid1.Canvas.Brush.Color := Query1.FieldByName( 'SAT' ).AsInteger;
  end else begin
    Grid1.Canvas.Brush.Color := clWhite;
  end;
  Grid1.canvas.FillRect( Rect );

  Grid1.SelectedField.Text := aCell;
end;

DeddyH 18. Feb 2009 21:53

Re: TDBAdvGrid - Zeilen einfärben
 
Ich kann beim besten Willen nicht erkennen, wo Du das Dataset editieren willst, da werden doch nur Werte abgefragt :gruebel:

Eppos 18. Feb 2009 21:55

Re: TDBAdvGrid - Zeilen einfärben
 
hier mal die genaue Medlung:

Query1: Dataset not in edit or insert mode.

DeddyH 18. Feb 2009 22:21

Re: TDBAdvGrid - Zeilen einfärben
 
Versuchst Du irgendwo anders, Daten zu ändern? Hast Du mal einen Breakpoint gesetzt? Wo tritt der Fehler auf?

Eppos 18. Feb 2009 22:26

Re: TDBAdvGrid - Zeilen einfärben
 
nein ich editiewre die daten nicht,
der Fehler tritt hier auf:

Delphi-Quellcode:
SelectedField.Text := aCell;

DeddyH 18. Feb 2009 22:32

Re: TDBAdvGrid - Zeilen einfärben
 
Ah, das wird die interne Datenanbindung sein. Mach doch mal ein Canvas.Textout daraus.

Eppos 18. Feb 2009 22:41

Re: TDBAdvGrid - Zeilen einfärben
 
wunderbar, das hat geklappt.
Das Problem ist jetzt nur, dass überall der gleich Wert drin steht.
Da aber das Grid in FormShow gefüllt wird, und der Fokus im Grid natürlich immer auf dem 1. Feld.
Wie ermittel ich die Zelle durch row und col?

DeddyH 18. Feb 2009 22:47

Re: TDBAdvGrid - Zeilen einfärben
 
Da ich die TMS-Komponenten nicht habe, rate ich mal ins Blaue:
Delphi-Quellcode:
alterInhalt := Cells[ACol,ARow];


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.
Seite 2 von 3     12 3      

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