AGB  ·  Datenschutz  ·  Impressum  







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

Stringgrid Zelle unterschiedlich färben

Ein Thema von Logan · begonnen am 27. Dez 2005 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 13:39
Zitat von Logan:
In der Demo geht es aber nur drum Zellen einfarbig zu färben.
Ich sollte genauer lesen

Sollen die Zellen nur farbig sein oder auch Text enthalten?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 13:45
nich trauchig sein, du hast es doch gut gemacht ... dort steht ja drin, wie man zeichnet und den Text reinmacht, also alles, was man braucht, dieses müß jetzt halt nur noch angepasst werden

Zusammenfassung aus deiner Demo:
Delphi-Quellcode:
// Hintergrund zeichnen
Canvas.Brush.Color := clGreen;
Canvas.FillRect(Rect);
// Textausgeben
DrawText(Canvas.Handle, PChar(celltext), Length(celltext), Rect, DT_SINGLELINE);
$2B or not $2B
  Mit Zitat antworten Zitat
Logan

Registriert seit: 27. Dez 2005
Ort: Hamburg
42 Beiträge
 
#13

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 13:51
Zitat:
Sollen die Zellen nur farbig sein oder auch Text enthalten?
In der Jahresansicht soll es nur farbig sein, und in den anderen Ansichten Text und farbig
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 13:53
Hai (b)engelchen.

Ich glaube Du hast auch nicht richtig gelesen. Er möchte ja in einer Zelle mehr als eine Farbe.

Hier mal ein Demo für eine zweifarbige Zelle (horizontal geteilt):
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: integer;
  Rect: TRect; State: TGridDrawState);
var
  celltext: string;
  myDrawRect: TRect;
  rowHeight: integer;
begin
  with (Sender as TStringGrid) do
  begin
    celltext := Cells[ACol, ARow];
    myDrawRect := Rect;
    SetBkMode(StringGrid1.Canvas.Handle,OPAQUE);
    if (ARow = 2) and (ACol > 0) then // Hier ist es zweifarbig
    begin
      Canvas.Brush.Color := clRed;
      rowHeight := RowHeights[ARow];
      myDrawRect.Bottom := myDrawRect.Bottom - (rowHeight div 2);
      Canvas.FillRect(myDrawRect); // Hintergrund für die obere Hälfe zeichnen

      Canvas.Brush.Color := clBlue;
      myDrawRect.Bottom := Rect.Bottom;
      myDrawRect.Top := myDrawRect.Top + (rowHeight div 2);
      Canvas.FillRect(myDrawRect); // Hintergrund für die untere Hälfe zeichnen
      SetBkMode(StringGrid1.Canvas.Handle, TRANSPARENT); // Den Hintergrund nich überschreiben
    end;
    if (ARow = 3) then // Einfarbige Zeilen
    begin
      Canvas.Brush.Color := clGreen;
      Canvas.FillRect(Rect);
    end;
    DrawText(Canvas.Handle, PChar(celltext), Length(celltext),Rect, DT_SINGLELINE);
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Logan

Registriert seit: 27. Dez 2005
Ort: Hamburg
42 Beiträge
 
#15

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 14:02
Oha, genau sowas meinte ich, vielen lieben Dank für die Hilfe und sorry falls ich mich unverständlich ausgedrückt habe

Super Forum!!!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 14:11
Zitat von Logan:
... und sorry falls ich mich unverständlich ausgedrückt habe
Du kannst ja nichts dafür wenn ich nicht richtig lesen kann. Es war schon genau beschrieben was Du wolltest.

Zitat:
Super Forum!!!
Das hören wir immer gerne. Danke

So, nur um sicher zu sein:
Hast Du auch verstanden wass ich da im Code mache?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Logan

Registriert seit: 27. Dez 2005
Ort: Hamburg
42 Beiträge
 
#17

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 14:18
Verstanden schon, mir geht es ja nicht um Copy & Paste, will ja schliesslich was lernen

In meinen Augen is der Schlüssel genau hier:

myDrawRect.Bottom := myDrawRect.Bottom - (rowHeight div 2); //<---Genau das
SetBkMode(SG_Jahre.Canvas.Handle, TRANSPARENT);

  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 14:29
Genau.

Man hat ja in der Variablen Rect die genaue Position der Zelle die gerade gezeichnet wird. Also berechne ich einfach die Position wenn der Bereich denn ich färben möchte nur halb so hoch ist wie die Zelle.

Das mit dem SetBkMode ist notwendig um bei der Textausgabe den Hintergrund nicht mit der aktuelle Brush.Color zu überschreiben.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Stringgrid Zelle unterschiedlich färben

  Alt 27. Dez 2005, 15:45
Zitat von Sharky:
Hai (b)engelchen.
Ich glaube Du hast auch nicht richtig gelesen. Er möchte ja in einer Zelle mehr als eine Farbe.
Zitat von himitsu:
schau mal unter CANVAS ... du kannst alle möglichen Zeichenoperationen da verwenden
na verstanden hatte ich es schon richtig, denk ich mal ... wie gesagt, es mußten doch nur die Zeichenoperationen so angepasst werden, daß da mehrere Farbbereiche entstehen ^^
$2B or not $2B
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#20

Re: Stringgrid Zelle unterschiedlich färben

  Alt 16. Mai 2006, 20:42
sorry, dass ich das thema herauskrame aber ich bekomme es einfach nicht hin die hier genannte Funktion auszuführen..

ich verwende den Code auf der ersten Seite bei dem man zwei farben einfügen kann und will mit einem knopfdruck eine Zelle färben aber das geht nicht weil er sagt dass TGridDrawState und Enumeration inkompatibel sind.. mein Aufruf ist wie folgt:

Stringgrid1drawcell(StringGrid1,1,1,Rect(0,0,0,0),gdSelected); und das geht eben nicht wie rufe ich die Funktion denn nun auf ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:05 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