AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

StringGrid Zelle einfärben

Offene Frage von "zorakh"
Ein Thema von zorakh · begonnen am 13. Okt 2008 · letzter Beitrag vom 14. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2   
zorakh

Registriert seit: 12. Okt 2008
21 Beiträge
 
#1

StringGrid Zelle einfärben

  Alt 13. Okt 2008, 15:54
Ich habe ein StringGrid und möchte gerne einzele Zellen einfärben. Ich will das ganze letzendlich so einbauen, dass ich eine Funktion bekomme nach diesem Schema:

ColorCell(StringGrid1,1,1,clred);

Ich muss halt im Programmablauf die Zellen farbig unterlegen.

Ich habe das hier als Beispiel gefunden:

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with TStringGrid(Sender).Canvas do begin
       if (ACol=1) and (ARow=1) then begin
          Brush.Color:= clRed;
          FillRect(Rect);
       end;
  end;
end;
Aber leider verstehe ich es nciht wirklich und dann möchte ich es nciht benutzen. Kann mir einer ein wenig erläutern wie es funktioniert, was z.B. in die Parameter rein müsste und wie ich es in meine Form bringen könnte?!


Vielen Dank
zorakh
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 15:57
Markiere das StringGrid einmal in der IDE, wechsel im OI auf "Ereignisse" und mach dort einen Doppelklick auf "OnDrawCell". Schon hast Du die Parameter Und zumindest in älteren Delphi-Versionen ist dieses Ereignis auch gut in der Hilfe beschrieben.
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
zorakh

Registriert seit: 12. Okt 2008
21 Beiträge
 
#3

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 16:06
Wann findet denn dieses Ereigniss immer statt?
Weil es nützt mir wiegsagt ncihts, wenn das nur einmal passiert.

Außerdem noch nebenbei;
Wenn sich das Ereigniss jetzt ein 2. mal mit anderen Koordinaten ausführen würde wäre dann die 1,1 Zelle wieder weiß? nein oder?
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

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

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 16:07
Schaumal hier

Gruss Sascha
"... 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
zorakh

Registriert seit: 12. Okt 2008
21 Beiträge
 
#5

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 16:34
In dem Link konnte ich jetzt die Antwort auf meine beiden Fragen(Der Post über diesem) leider auch nciht erspähen?!
Kann mir dazu jemand noch etwas sagen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 16:59
Das Ereignis wird ausgelöst, wenn eine Zelle neu gezeichnet werden muss, weil sich z.B. der Text geändert hat. Und ob die vorherige Zelle weiß wird oder nicht, liegt in Deiner Hand, wenn Du selbst zeichnest.
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
zorakh

Registriert seit: 12. Okt 2008
21 Beiträge
 
#7

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 17:43
Udn wie löse ich das Ereigniss manuell aus?

Stringgrid1.OnDrawCell geht nciht. Nicht genug Parameter
  Mit Zitat antworten Zitat
zorakh

Registriert seit: 12. Okt 2008
21 Beiträge
 
#8

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 17:57
Zusätlich zum manuell auslösen gibt es noch ein Problem.
Nämlich werden alle Ereignisse blockiert. Ich habe:
Delphi-Quellcode:
procedure TForm1.TabelleDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin

  with TStringGrid(Sender).Canvas do begin
       if (ACol=0) and (ARow=0) then begin
        If Colormod='clwhitethen
         Brush.Color:=clwhite
         else
          Brush.Color:= clRed;
          end;
          FillRect(Rect);
       end;

  end;
und

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var S1,S2:integer;
begin
Colormod:='clred';
Feldmase:=10;
SetLength(Feld,Feldmase,Feldmase);
SetLength(Feld2,Feldmase,Feldmase);
ConfigField();
for S1:=0 to (feldmase-1) do begin
Tabelle.Cells[S1,0]:='X';
Tabelle.Cells[S1,(feldmase-1)]:='X';
Tabelle.Cells[0,S1]:='X';
Tabelle.Cells[(feldmase-1),S1]:='X';
end;
[...]
Benutze ich das Ereigniss unter OnDrawCell nciht so werden die X-Zeichen eingezeichnet. So sehe ich aber nur ein rotes Feld und das wars...

Wie kann das sein?
  Mit Zitat antworten Zitat
zorakh

Registriert seit: 12. Okt 2008
21 Beiträge
 
#9

Re: StringGrid Zelle einfärben

  Alt 13. Okt 2008, 19:42
Weiß niemand warum das den Programmablauf stoppt?
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#10

Re: StringGrid Zelle einfärben

  Alt 14. Okt 2008, 01:52
was wird gestoppt?

du prüfst auf row=0 und col=0 danach dein eigener zeichencode...also färbst du auch nur die eine zelle rot bzw. weiß, alles andere wird nicht gezeichnet...der Zelltext wird deshalb nicht angezeigt, weil du ihn nicht zeichnest mit dem fillrect übermalst du alles in der Zelle und musst den Text neu zeichnen (TCanvas.Textout).
weiterhin ist dein colormod nur global gültig und nicht pro zelle, was evtl. gewünscht ist.
um zu speichern, welche zelle welche farbe haben soll, kannst du das Objects-property verwenden. dort kannst du pro zelle ein Objekt (oder einen auf TObject gecasteten Integer ) hinterlegen.je nachdem wieviele Infos du pro zelle benötigst, musst du deine Wahl diesbezüglich treffen...

HTH Frank
  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 23:24 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