Autor Beitrag
seifman
Hält's aus hier
Beiträge: 13

Win XP
D5 Prof
BeitragVerfasst: Do 16.10.03 20:08 
Hallo!

Ich würde gerne wissen, ob es irgenwie möglich ist in einem StringGrid oder einer anderen Grid-Komponente bestimmte Zellen dauerhaft mit einer anderen Farbe zu markieren. In der darauf folgenden Zeile, soll ebenfalls wieder ein bestimmter Bereich markiert werden können. Kann mir jemand sagen wie das in etwa funktionieren könnte?

Danke.

Nachtrag:

Ich weiss, daß es möglich ist im Stringgrid die Zeilen verschiedenfarbig darzustellen. Es muß doch auch irgendwie möglich sein, nur einen bestimmten Bereich der Zellen farbig zu markieren, ohne daß ich die gesamte Zeile einfärben muß. Falls das nicht möglich ist, wäre ich über Hinweise erfreut, wie ich das in anderen Grids machen kann.

Damit man sich in etwa eine Vorstellung machen kann, wie das ganze Aussehen soll, habe ich hier mal ein Bild bereitgestellt. Es wäre nett, wenn mir jemand dabei helfen könnte, da ich in Sachen Delphi noch ein absolutes Greenhorn bin.

user defined image

Sollte hier kein Bild zu sehen sein, folgen Sie einfach dem Link.

mitglied.lycos.de/seifman/mgrid.png

Nochmals danke.
Killi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 299

Win*
D6 Prof
BeitragVerfasst: Mi 10.12.03 15:54 
warum konnte ihm keiner helfen???

ALso - du brauchst ne Boolean-Variable, meine heißt SELECTTAG

dann musst du folgendes machen:

OnMouseDown deiner StringGrid
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TFMain.FrameWoche1SGridMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   SelectTag:= True;
end;


OnMouseUp deiner SGrid
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TFMain.FrameWoche1SGridMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
     SelectTag:= False;
end;


und folgendes im OnDrawCell:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
...
var
  RowRect: TGridRect;
  Auswahl: TRect;
begin
RowRect:= SGrid.Selection;
                         if (ARow >= RowRect.Top) and (ARow <= RowRect.Bottom) then
                         begin
                              SGrid.Canvas.Brush.Color:= clLime;
                              Auswahl:= SGrid.CellRect(0, ARow);
                              SGrid.Canvas.FillRect(Auswahl);
                         end;
                         SGrid.Canvas.Font.Color:= clBlack;

_________________
----
Life is hard and then you die