AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Stringgrind und (mal wieder) die Frage nach der Farbe......
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrind und (mal wieder) die Frage nach der Farbe......

Ein Thema von WIng2005 · begonnen am 23. Jul 2007 · letzter Beitrag vom 24. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#1

Stringgrind und (mal wieder) die Frage nach der Farbe......

  Alt 23. Jul 2007, 16:53
Hallo Gemeinde,

habe mich mal hier ein wenig belesen und komme nun doch nicht weiter.
Ich möchte ein StringGrid mit verschieden farbigen Spalten darstellen.
Hierzu habe ich bereits:

Delphi-Quellcode:
Procedure STGRPFPL2_UE1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
Var x:integer;
  Begin
  mainform.STGRPFPL2_UE_1.Canvas.Brush.Color := clmoneygreen;
  if (ACol=0) and (ARow >0) then
  mainform.STGRPFPL2_UE_1.Canvas.FillRect(Rect);

  mainform.STGRPFPL2_UE_1.Canvas.Brush.Color := clwhite;
  if (ACol=0) and (ARow =0) then
   mainform.STGRPFPL2_UE_1.Canvas.FillRect(Rect);

  end;
eingefügt. Dieser Event sollte doch nun aufgerufen werden, sobald das Grid gezeichnet wird.
Funktioniert auch soweit ganz gut, jedoch ist mein mit

Delphi-Quellcode:
Procedure PFPL_Uebersicht_Main;
var x:integer;
Begin
With mainform do
Begin
.
.
.
Select_1('TeileNr','bis_fpl_ma');
      STGRPFPL2_UE_1.RowCount:=Zquery1.RecordCount+2;
      x:=2;
      While not Zquery1.Eof do
      Begin
        STGRPFPL2_UE_1.Canvas.Brush.Color:=clWindowText;
        STGRPFPL2_UE_1.Cells[0,x]:=ZQuery1.fieldbyname('teilenr').AsString;
        x:=x+1;
        ZQuery1.next;
      end;
.
.
.
end;
eingefügter Text auf wundersame Weise verschwunden. Ohne "Farbzusatz" geht alles. Wo könnte
hier meine Denkfehler liegen?

MFG
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 23. Jul 2007, 16:58
Da Du das Grid komplett selbst zeichnest, musst Du auch den Text selbst zeichnen
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
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#3

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 23. Jul 2007, 20:04
Also, dass ging mir jetzt zu schnell....
Ich schreibe doch den Text Zelle für Zelle selbst rein.....wo soll das Problem liegen?

MFG
Steffen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 23. Jul 2007, 20:06
Du überschreibst Deinen Text mit der Farbe (fillRect).

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 23. Jul 2007, 20:24
Versuch es mal so (Beispiel):
Delphi-Quellcode:
procedure TForm1.STGRPFPL2_UE1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
const Farben: array[Boolean] of TColor = (clmoneygreen,clwhite);
Begin
  STGRPFPL2_UE1.Canvas.Brush.Color := Farben[(ACol=0) and (ARow >0)];
  STGRPFPL2_UE1.Canvas.FillRect(Rect);
  DrawText(STGRPFPL2_UE1.Canvas.Handle,PChar(STGRPFPL2_UE1.Cells[ACol,ARow]),
           -1, Rect,DT_CENTER or DT_VCENTER or DT_SINGLELINE);
end;
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
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#6

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 23. Jul 2007, 21:34
Hallo und schonmal danke für die Infos...
Wenn man einfach mal davon ausgeht, dass das Grid schon gefüllt ist,
sollte es doch eine Möglichkeit geben, im nachhinein die Background-Farbe
zu veränder, oder sehe ich das falsch..?

@DeddyH: Dein Beispiel muss ich mir morgen mal genauer anschauen, derzeit (ist ja auch schon spät )
verstehe ich nicht viel davon....

MFG
Steffen
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#7

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 24. Jul 2007, 01:02
Zitat von WIng2005:
Hallo und schonmal danke für die Infos...
Wenn man einfach mal davon ausgeht, dass das Grid schon gefüllt ist,
sollte es doch eine Möglichkeit geben, im nachhinein die Background-Farbe
zu veränder, oder sehe ich das falsch..?
...
MFG
Steffen
Hallo Steffen,

im Prinzip geht das schon (Bitblt-Operationen), aber es ist komplizierter als das Neuzeichnen von Hintergrund und Text. Ausserdem muss der Hintergrund garkeine Farbe sein, es kann sich auch um ein Muster handeln. Wenn z.B. der Text schwarz und der Hintergrund gedithert grau ist, kannst du bei bestimmten Pixeln nicht unterscheiden, ob sie zum Text oder zum Hintergrundmuster gehören.

Gruss Reinhard
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#8

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 24. Jul 2007, 08:42
@DeddyH: Funzt, danke!! Einzig das Array ist nicht geeignet, da ich mit mehr Farben arbeite.
Verstehe ich das richtig, dass er den Text der Zelle nimmt und nocheinmal zeichnet?
Ein wenig umständlich, oder?

MFG
Steffen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 24. Jul 2007, 08:46
Hallo,

OnDrawCell wird von Windows (über den Umweg der VCL)
aufgerufen, wenn neu gezeichnet werden soll.

Im "normalen" StringGrid gibt es eine eingebaute OnDrawCell,
die ähnlich aussieht wie deine eigene.

Es wird also nicht doppelt gezeichnet.

Das Grid.Cells[]:= 'bla'

hat mit dem Zeichnen nichts zu tun.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Stringgrind und (mal wieder) die Frage nach der Farbe...

  Alt 24. Jul 2007, 08:48
Naja, siehe #7. Wenn Du den Zellhintergrund mit Farbe übermalst, musst Du halt dafür sorgen, dass die Texte wieder sichtbar werden, da ist das so der einfachste Weg. Und das mit den mehreren Farben konnte ich Deinem Posting nicht entnehmen, Du kannst es ja ändern. Ich wollte lediglich einen Weg aufzeigen, wie man es elegant machen kann.
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
Antwort Antwort
Seite 1 von 2  1 2      


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:04 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