AGB  ·  Datenschutz  ·  Impressum  







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

farbige Zellen im Stringgrid

Ein Thema von Hansa · begonnen am 28. Mär 2004 · letzter Beitrag vom 28. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 13:36
Hi,

ich muß folgendes machen : in Abhängigkeit von dem Wert, der in Spalte 1 eines Stringgrids eingegeben wird, soll Spalte 4 farblich anders dargestellt werden. Gesteuert wird das durch die Variable SP. Jetzt habe ich paar seltsame Effekte. Entweder werden alle Zeilen bunt, oder eine Zeile zu tief oder zu hoch. Irgendwas ist total verkehrt. 8)

Delphi-Quellcode:
procedure TfrmPreisEing.StringGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  inherited;
  with (Sender as TStringGrid) do begin
    if (ACol = 0) or (ARow = 0) then
      Canvas.Brush.Color := clBtnFace
    else begin
      if SP and (ACol = 4) and (ARow = RowCount - 1) then
      begin
        Canvas.Brush.Color := clMoneyGreen;
      end
      else
        Canvas.Brush.Color := clWindow;
      Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
      Canvas.FrameRect(Rect);
    end;
  end;
end;
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#2

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 13:41
Ich hab' hier mal ein Code-Stückchen. Ich hatte das ganze im OnMouseDown vom DrawGrid, brauchst dir die Infos nur noch raussammeln...
Delphi-Quellcode:
  case FieldArray[ACol + 1, ARow + 1] of
    1: begin
         with DrawGrid.Canvas do
         begin
           Pen.Style := psClear;
           Brush.Style := bsSolid;
           Brush.Color := clTeal;
           FillRect(Rect);
         end;
       end;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#3

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 13:42
frage willst du die FixedRow und Col auch einfärben?
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#4

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 13:45
Delphi-Quellcode:
begin if arow >= 1 then
         if acol >= 1 then
         if (DayList[acol].isfree) and (acol <= 5) then
         begin
      stringgrid1.Canvas.Brush.color:=clred;
         end;
hier mal ein beispiel. da wird getestet ob in der Daylist ein Tag frei ist und dieser dann eingefärbt.

du solltest dich hier erstmal auf das wesentliche konzentrieren und nur versuchen sp auszuwerten.

warum rufst du den Vorgänger auf_ objektablage

dann mußt du schon zeigen was der vorgänger macht.
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 15:07
Kleiner Tip an raik und hansa:
Niemals die Angaben für FixedCols & FixedRows absolut angeben!
Raiks Code könnte dann so aussehen:
Delphi-Quellcode:
With Sender as TStringGrid Do
Begin
  If aRow < FixedRows Then Exit;
  If aCol < FixedCols Then Exit;

  If (DayList[aCol].isfree) and (aCol <= 5) Then
    Canvas.Brush.color:=clRed;
End;
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#6

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 16:03
@robert begründung
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 16:15
Ändere mal im OI die ANzahl der FixedCols oder FixedRows.
Du müssest dann überall im Code Anpassungen vornehmen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 16:20
Das Problem ist anscheinend folgendes: im OnDrawCell werden alle Zellen neu gezeichnet. Also nützt es mich nichts mehr, die in Abhängigkeit von einer Zeile zu machen. Ich muß wohl ein Kriterium in dem StringGrid selber unterbringen. Sehe ich das richtig ?

P.S.: Hat man eine genau definierte Anzahl FixedRows/Cols so ist es wohl fast egal, ob die absolut oder nicht angegeben werden. Insbesondere bei Robert, wo keine Form was mit der anderen zu tun hat.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 17:33
Als ich Raiks Code gesehen hatte, hatte ich mich schon geärgert, dass ich immer per FillRect oder TextRect die Zelle überzeichne.
Nachdem ich es gerade getestet habe, musste ich feststellen, dass das so nicht geht.
Ist ja auch klar -> OnDrawCell wird NACH dem Zeichnen aufgerufen, nicht davor (wie bei ListBoxes, etc)
Zum Beispiel zeichnet der folgende Code die Zeilen abwechselnd weiß und hellgrau (ParentColor des Grids kann also auf true stehen):
Delphi-Quellcode:
With Sender As TStringGrid Do
Begin
  If aRow < FixedRows Then Exit;
  If aCol < FixedCols Then Exit;
  With Canvas Do
  Begin
    // wenn Zelle ausgewählt...
    If gdSelected In State Then
      Brush.Color := $00EFD3C6
    // sonst ...
    Else If aRow Mod 2 = 0 Then
      Brush.Color := $00EFEFEF
    Else
      Brush.Color := clWhite;

    // Zeichne den Text mit dem veränderten Hintergrund
    TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
  End;
End;
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#10

Re: farbige Zellen im Stringgrid

  Alt 28. Mär 2004, 17:37
bitte

verstehe ich nicht, der code soll nur die auswahl zeigen, wie ich eine Spalte einfärbe.
das man
Delphi-Quellcode:
 
Stringgrid1.Canvas.FillRect(Rect);
hintersetzt, hatte ich angenommen.

raik

das problem von hansa ist ja nicht das zeichnen, sondern die logik die spinnt.
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  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 04:49 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