AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

Ein Thema von oldmann · begonnen am 10. Okt 2008 · letzter Beitrag vom 12. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2   
oldmann

Registriert seit: 10. Okt 2008
Ort: Weyhe
113 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 09:59
Hallo,

wer kann mir erklären wie man wie man in mit der Anweisung 'OnGetCellColor' die Hintergrundfarbe einzelner Zellen im Stringgrid zur Laufzeit ändert.
Wenn es möglich ist, bitte mit Beispiel.

Danke im voraus.
Oldmann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 10:10
Hallo und Willkommen in der DP, oldmann ,

das Ereignis 'OnGetCellColor' kenne ich jetzt nicht, aber Du könntest mal in der DP-Suche nach Hier im Forum suchenOnDrawCell schauen, da gibt es reichlich Beispiele. Bei Fragen einfach fragen
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
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 10:20
Hallo und willkommen in der DP oldmann,

bei den Schweizern findest Du dieses hier.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.984 Beiträge
 
Delphi 7 Professional
 
#4

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 10:34
Moin, Moin.

Auch von mir ein herzliches Willkommen!

Ein OnGetCellColor() kennt das "normale" TStringGrid nicht. Offenbar arbeitest du mit einer anderen Komponente. Poste doch mal die Parameter, vermutlich werden wir dir dann helfen können.
Ralph
  Mit Zitat antworten Zitat
oldmann

Registriert seit: 10. Okt 2008
Ort: Weyhe
113 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 11:07
Hallo Ralph,

danke für Deine Antwort.
Also zuerst einmal möchte ich sagen was vorhanden ist und was gemacht werden soll.
Ich hab bisher Daten aus einer Datei in einem Stringgrid auf dem Bildschirm ausgegeben.
Als Stringgrid habe ich die Komponente StringAlignGrid von Andreas Hörstemeier benutzt die sehr komfortabel ist und in der man jede einzelne Zelle mit einer beliebigen Farbe belegen kann.
Nun habe ich eine andere Gridkomponente gefunden, die den Vorteil hat das man jede einzelne Spalte durch klick auf die oberste Zeile sortieren kann.
Die Grid-Komponente stammt aus den Pie-Tools, die Adresse ist http://www.pie-tools.de/.
Ich wollte nun mein vorhandenes StringAligngrid von Andreas Hörstemeier auf die Pie-Stringgridkomponente umstellen.
Das klappt auch soweit, doch leider gibt es hier keine Möglichkeit eine einzelne Zelle mit einer Hintergrundfarbe zu belegen (zumindest habe ich keine gefunden).
Den Autor der Pie-Komponente konnte ich nicht erreichen.
Ich muss aber bei einem bestimmten Wert in der Zeile, die erste Zelle der Zeile mit einer anderen Hintegrundfarbe markieren.
Ich hoffe, das mir hier jemand weiterhelfen kann.

Gruss Eberhard (Oldmann)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 11:10
Ich habe dort den Satz entdeckt:
Zitat:
TPieDataGrid jetzt mit neuem Ereignis OnDrawOneCell zur individuellen Darstellung (z.B. Bitmaps) einzelner Zellen.
Wäre das nicht ein Ansatzpunkt?
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
oldmann

Registriert seit: 10. Okt 2008
Ort: Weyhe
113 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 11:40
Hallo Detlef,

danke für Deinen Hinweis.
Leider kann ich mit dem Ereignis OnDrawOneCell so nichts anfangen.
Soweit reichen leider meine Programmierkenntnisse nicht.
Ein Beispiel konnte ich dazu nicht finden.
Vielleicht kann mir jemand ein funktionelles Beispiel geben.

Gruss Eberhard (Oldmann)
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 11:49
Tachsche

Guckmal hier hab ich was für dich, dein StringGrid hat ein ereigniss OnDrawCell, da Kopierst du das rein

Die Spaltenzahl erhöst du mal auf 12 und wenn du das gemacht hast, gib mal "ja" in eine Zelle ein, vorher natürlich die Farben setzen.

viel spass damit

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
Var Celltext :string;
    Farbe: boolean;
    StC: TCanvas;
begin
   StC := StringGrid1.Canvas;
   With (Sender As TStringGrid) do
    begin
     
      Textformat := DT_SINGLELINE;
      Celltext := Cells[ACol, ARow];
      Farbe := True;

      //Text wird zentriert
      Textformat := Textformat Or DT_CENTER Or DT_VCENTER;

      if (ACol = 1) Or (ACol = 0) Then {//Zentrieren für spalten 1 und 0}
        begin
          StC.Font.Style := StC.Font.Style + [fsBold]; //Text fett
        end;

      if (ACol > 1) and (ACol < 11)then
       begin
          begin
            if LowerCase(Cells[ACol, ARow]) = 'Jathen
             begin
               StC.Brush.Color := //Deine Zellenfarbe
               StC.Font.Color := // Deinen Zellen Schriftfarbe
               Canvas.Font.Style := StC.Font.Style + [fsBold]; //Text fett
             end;
         end
       begin
         if (Farbe) then
          begin
           //Zelle einfärben
           SetBkMode(StC.Handle, OPAQUE);
           StC.FillRect(Rect);
          end;

         //Abschliessend den Text zeichnen
         DrawText(StC.Handle, PChar(Celltext), Length(celltext), Rect, Textformat);
       end;
   end;
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 12:13
Hallo,

das TStringAlignGrid hat in der mir bekannten Version doch dasda:
StringAlignGrid1.ColorCell[0,0] := clWindow; Damit dürfte die Zuweisung einer Farbe doch sehr einfach sein.
Dazu gibt es nochStringAlignGrid1.CellFont[0,0].Color := clRed; für die Schriftfarbe.

Delphi-Quellcode:
property ColorCell[ACol,ARow:longint]: TColor read GetColorCell write SetColorCell;
property ColorCol[ACol:longint]: TColor read GetColorCol write SetColorCol;
property FixColorCol[ACol:longint]: TColor read GetFixColorCol write SetFixColorCol;
property ColorRow[ARow:longint]: TColor read GetColorRow write SetColorRow;
property FixColorRow[ARow:longint]: TColor read GetFixColorRow write SetFixColorRow;
Damit müsste doch fast jede beliebige Einfärbung sämtlicher Zellen möglich sein.
  Mit Zitat antworten Zitat
oldmann

Registriert seit: 10. Okt 2008
Ort: Weyhe
113 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.

  Alt 10. Okt 2008, 12:52
Hallo,

danke für die Hinweise.
Ich habe das ausprobiert. Die Variable 'Textformat' kannte das Programm nicht.
Ich habe sie vom Typ Word deklariert.
Dann ging es bis zur Zeile:
Canvas.Font.Style := StC.Font.Style + [fsBold]; //Text fett
Hier wird gemeckert:
Inkompatible Typen: TColor und Procedure, untyped Pointer or untyped Parameter.
Was muss ich hier ändern?

Eine weitere Frage ist:
Ich muss ja aus meinem Programmteil in dem ich meine Datei in das Stringgrid einlese beim auftreten eines bestimmten Wertes in die Procedure

procedure Tform21.PieDataGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);

wechseln um die Cellfarbe zu ändern.
Wie muss ich den Aufruf vornehmen und welche Variablen muss ich übergeben.
Bitte ein Beispiel.
Es tut mir Leid wenn ich Euch, mit solch für Euch sicher simplen Sachen, nerve.

Gruß Eberhard (Oldmann)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf