AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid einfärben

Ein Thema von c.Stetter · begonnen am 9. Nov 2007 · letzter Beitrag vom 9. Nov 2007
Antwort Antwort
c.Stetter

Registriert seit: 7. Nov 2007
20 Beiträge
 
#1

StringGrid einfärben

  Alt 9. Nov 2007, 13:49
Hallo,


ich wollte ein StringGrid einfärben (4 Zeilen Geld, 3 Zeilen Rot, usw)

Manuel mache ich das so :

Delphi-Quellcode:
procedure TMainForm.grd_SpieleDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  inherited;
  with (sender as TStringGrid) do
  begin
    if ((aRow = 9) or (aRow = 10) or (aRow = 11) or (aRow = 12)) then
    begin
     Canvas.Brush.Color := clGradientActiveCaption ;
     Canvas.FillRect(Rect);
     Canvas.TextOut(Rect.Left+2, Rect.Top+2, (sender as TStringGrid).Cells[ACol, ARow]);
    end;
  end;
end;
hier werden die Zeilen 9, 10, 11, 12 eingefärbt.

Ich habe 18 Farben, mit der ich das StringGrid einfärben muss.
Würde ich das manuel machen, so würde der Quelltext ziemlich lang.

Danke für eure Hilfe
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: StringGrid einfärben

  Alt 9. Nov 2007, 13:52
Und nach welcher Logik soll gefärbt werden?
Markus Kinzler
  Mit Zitat antworten Zitat
9. Nov 2007, 13:53
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
TStringGrid -> VCL
c.Stetter

Registriert seit: 7. Nov 2007
20 Beiträge
 
#4

Re: StringGrid einfärben

  Alt 9. Nov 2007, 13:56
Ich bräuchte eine procedure oder function in der ich zum beispiel parameter übergebe.

ich stelle mir z.b vor

procedure Einfaeben(aStringGrid: TStringGrid; aRow, aCol : integer; Farbe : TColor);


nur weiß ich nicht genau wie man das mach. Bin noch nicht lange dabei.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: StringGrid einfärben

  Alt 9. Nov 2007, 13:58
So geht es nicht. du könntest aber einen Eigenschaftenarray, in dem du das ablegst, anlegen, welcher dann im Ownerdraw ausgewertet wird.
Markus Kinzler
  Mit Zitat antworten Zitat
c.Stetter

Registriert seit: 7. Nov 2007
20 Beiträge
 
#6

Re: StringGrid einfärben

  Alt 9. Nov 2007, 14:26


ich glaube das ist ein bißchen zu hoch für mich. kannst du mir nen kleinen tipp geben, wie ich anfangen muss.
  Mit Zitat antworten Zitat
c.Stetter

Registriert seit: 7. Nov 2007
20 Beiträge
 
#7

Re: StringGrid einfärben

  Alt 9. Nov 2007, 14:35
Ich habe nur ein problem mit :

Delphi-Quellcode:
  with (sender as TJVStringGrid) do
  begin
=> if ((aRow = 9) or (aRow = 2) or (aRow = 5) or (aRow = 1)) then
    begin
     Canvas.Brush.Color := Farbe ;
     Canvas.FillRect(Rect);
     Canvas.TextOut(Rect.Left+2, Rect.Top+2, (sender as TJvStringGrid).Cells[ACol, ARow]);
    end;
  end;
gibt es eine möglichkeit hier zu bestimmen, welche zeile übergeben wird ???
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: StringGrid einfärben

  Alt 9. Nov 2007, 16:04
Herzlich willkommen in der Delphi-PRAXiS, c.Stetter.

Deine Code-Zeilen stammen doch aus dem OnDrawCell-Handler, oder? Dort werden dir schon die Zell-Koordinaten (ACol, ARow) übermittelt. Du kannst mit einer Abbildungsfunktion arbeiten oder das CASE-Konstrukt direkt im Event-Handler reinschreiben:

Delphi-Quellcode:
function LookupColor(index: Integer): TColor;
begin
  case index of
    0..4: Result := clRed;
    5..9: Result := clBlue;
    else
      if Odd(index)
        then Result := clGreen
        else Result := clWhite;
  end;
end;

procedure TMainForm.grd_SpieleDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  with (Sender as TJVStringGrid) do
  begin
    Canvas.Brush.Color := LookupColor(ARow);
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
  end;
end;
Freundliche Grüße vom marabu
  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 18:59 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