AGB  ·  Datenschutz  ·  Impressum  







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

Einfärben des Grids

Ein Thema von Flash68 · begonnen am 4. Okt 2011 · letzter Beitrag vom 7. Okt 2011
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#1

Einfärben des Grids

  Alt 4. Okt 2011, 08:49
Hallo zusammen,

ich versuche mit folgender Procedure mein Grid abwechselnd einzufärben:

Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  test1: real;
  RowNo: Integer;
  farbe: Integer;
begin
  with (Sender as TDBGrid) do
  begin
    if (gdSelected in State) then
    begin
      Canvas.Brush.Color := clskyblue;
    end
    else
    begin
      rowno := DM_Rechner.ADO_DS_Rechner.RecNo;
      test1 := (Rowno / 2) - trunc(Rowno / 2);
      If test1 = 0 then
        begin
          farbe := Clwhite;
        end
        else
        Begin
          farbe := clsilver;
        end;
      canvas.brush.Color := farbe;
      canvas.Font.Color := ClBlack;
    end;
    canvas.FillRect(rect);
    canvas.TextOut(Rect.Left + 2, rect.Top + 1, column.Field.AsString);
 end
end;
bei meinen anderen Projekten funkioniert das auch, aber bei dem aktuellen Projekt ist alles clsilver und nicht abwechselnd silber und weiss.

Kann mir jemand helfen woran das liegt und wie ich das ändere?

Gruß

Flash

Geändert von Flash68 ( 4. Okt 2011 um 10:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Einfärben des Grids

  Alt 4. Okt 2011, 09:16
Benutze doch bitte Delphi-Tags, dann ist der Code auch besser zu lesen. Und Deine Ermittlung gerader/ungerader Zeilen erscheint mir doch sehr kompliziert, wieso nicht einfach Odd() oder mod 2 benutzen. Durch den Vergleich einer Fließkommazahl mit 0 kann es sein, dass das so nicht eintritt, da etwas wie 0,00000001 herauskommt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#3

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:04
Wie benutze ich die Tags?

Wie gesagt bei meinen anderen Projekten funktioniert das ohne Probleme, habe den Code selbst im Internet gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:12
Entweder über die "Helm"-Schaltfläche im Beitragseditor oder händisch mit [ delphi]Code[ /delphi] (ohne Leerzeichen). Und wie gesagt, das geht auch anders:
Delphi-Quellcode:
if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
  farbe := clSilver
else
  farbe := clWhite;

//oder auch
if (DM_Rechner.ADO_DS_Rechner.RecNo and 1) = 0 then
  farbe := clWhite
else
  farbe := clSilver;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#5

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:23
OK hab es oben mal geändert, danke für den Tip.

Wegen des codes meinst du so:

Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  farbe: Integer;
begin
  with (Sender as TDBGrid) do
  begin
    if (gdSelected in State) then
    begin
      Canvas.Brush.Color := clskyblue;
    end
    else
    begin
      if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
        farbe := clSilver
      else
        farbe := clWhite;
      {end; ist zu viel}
      canvas.brush.Color := farbe;
      canvas.Font.Color := ClBlack;
    end;
    canvas.FillRect(rect);
    canvas.TextOut(Rect.Left + 2, rect.Top + 1, column.Field.AsString);
 end
end;

Geändert von Flash68 ( 4. Okt 2011 um 10:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:26
Das sollte so richtig sein, zumindest ist mir nichts Negatives aufgefallen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#7

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:30
Es war ein end zuviel, aber das hat leider nichts geändert, es wird noch immer alles in silber angezeigt(außer dem Cursor der ist blau).
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:36
Hast Du DefaultDrawing auf false gesetzt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#9

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:41
Ne das steht auf True so wie bei meinen anderen Projekten auch.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Einfärben des Grids

  Alt 4. Okt 2011, 10:43
Komisch. Wie ist es so?
Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  farbe: Integer;
begin
  with (Sender as TDBGrid) do
  begin
    if (gdSelected in State) then
    begin
      farbe := clskyblue;
    end
    else
    begin
      if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
        farbe := clSilver
      else
        farbe := clWhite;
      end;
    end;
    canvas.brush.Color := farbe;
    DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
  end;
end;
[edit] Oder mal ohne with:
Delphi-Quellcode:
procedure TFRM_Main.DBG_RechnerDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  grid: TDBGrid;
  farbe: TColor;
begin
  grid := Sender as TDBGrid;
  if (gdSelected in State) then
  begin
    farbe := clskyblue;
  end
  else
  begin
    if Odd(DM_Rechner.ADO_DS_Rechner.RecNo) then
      farbe := clSilver
    else
      farbe := clWhite;
    end;
  end;
  grid.canvas.brush.Color := farbe;
  grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 4. Okt 2011 um 10:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 15:52 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