Einzelnen Beitrag anzeigen

JoelH
(Gast)

n/a Beiträge
 
#1

FillRect(Rect) geht und in der Unterprocedure geht es nicht

  Alt 11. Jul 2003, 08:30
Ich habe einmal
Delphi-Quellcode:
PROCEDURE TMainForm.ColorGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
BEGIN
WITH ColorGrid.Canvas DO
BEGIN
CASE (ACol * ARow) MOD 11 OF
0: Brush.Color := clBtnFace;
1: Brush.Color := clYellow;
2: Brush.Color := clWhite;
3: Brush.Color := clBlue;
4: Brush.Color := clRed;
5: Brush.Color := clNavy;
6: Brush.Color := clMaroon;
7: Brush.Color := clGreen;
8: Brush.Color := clAqua;
9: Brush.Color := clFuchsia;
10: Brush.Color := clPurple;
END;
IF (ColorGrid.Selection.Left = ACol) AND (ColorGrid.Selection.Top = ARow) THEN
Brush.Color := clLime;
FillRect(Rect);
Font.Color := Brush.Color XOR 65535;
TextOut(Rect.Left, Rect.Top, ColorGrid.Cells[ACol, ARow]);
END;
END;
von hier Beispiel

Das geht auch und in meinem Programm geht es so auch aber wenn ich das so umbauen will, weil ich viel Grids hab die unterschiedlich eingefärbt werden sollen hab ich gemacht
Delphi-Quellcode:
procedure Tfrm_Objektuebersicht.stg_patenschaftenDrawCell(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var reihen : Array od Integer;
begin
  setlength(reihen,1);
  reihen[0] := 1;
  Gridcolor(Sender,ACol, ARow, Rect, State, reihen);
end;
Also quasi einen Parameter dazu gemacht welche Spalten er einfügen soll und dann sieht die GridColor Procedure so aus
Delphi-Quellcode:
procedure Gridcolor(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState; geldrows : Array of Integer);
var check : boolean;
    i : integer;
begin
  with Sender as TStringgrid do
  begin
    WITH Canvas DO
    BEGIN
      check := false;
      for i := 0 to length(geldrows)-1 do
      begin
        if ARow = geldrows[i] Then check := true;
      end;
      if (ARow <> 0) AND (check) then
        Brush.Color := schriftfarbe
      else
        Brush.Color := gridhintergrund;
      END;
      IF (Selection.Left = ACol) AND (Selection.Top = ARow) THEN
        Brush.Color := clLime;
      FillRect(Rect);
      Font.Color := Brush.Color XOR 65535;
      TextOut(Rect.Left, Rect.Top, Cells[ACol, ARow]);
    END;
  end;
end;
leider mault er dann =>
Zitat:
[Error] U_extra.pas(684): Incompatible types: 'HDC' and 'TRect'
warum nur ?
  Mit Zitat antworten Zitat