AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FillRect(Rect) geht und in der Unterprocedure geht es nicht

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

Ein Thema von JoelH · begonnen am 11. Jul 2003 · letzter Beitrag vom 12. Jul 2003
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
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
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: FillRect(Rect) geht und in der Unterprocedure geht es ni

  Alt 11. Jul 2003, 08:56
Zitat:
Delphi-Quellcode:
      if (ARow <> 0) AND (check) then
        Brush.Color := schriftfarbe
      else
        Brush.Color := gridhintergrund;
      END;
Wo ist den hier das zum END dazugehörende begin ? Hier machst du die with Canvas do Anweisung zu, womit sich FillRect und TextOut auf die Funktionen in Windows.pas beziehen und nicht auf die Canvas Methoden.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: FillRect(Rect) geht und in der Unterprocedure geht es ni

  Alt 11. Jul 2003, 08:58
Zitat von JoelH:
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 //1
      check := false;
      for i := 0 to length(geldrows)-1 do
      begin //2
        if ARow = geldrows[i] Then check := true;
      end; //2
      if (ARow <> 0) AND (check) then
        Brush.Color := schriftfarbe
      else
        Brush.Color := gridhintergrund;
      END; //1 --<<<<<<< das end ist zuviel
      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;
da ist ein end zuviel.

//eidt: zu langsam

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#4

hmm,

  Alt 11. Jul 2003, 09:17
upps, dank euch. Tolle Fehlermeldung, so schön passend Das END; ist wohl noch von der Caseanweisung hängen geblieben
  Mit Zitat antworten Zitat
Tom

Registriert seit: 7. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#5

Re: FillRect(Rect) geht und in der Unterprocedure geht es ni

  Alt 11. Jul 2003, 09:30
Klage nicht ...
Du wolltest Canvas.FillRect aufrufen, hast aber tatsächlich - durch das fehlende End - die API-Funktion FillRect aufgerufen. Die hat nun mal andere Parameter.

Nebenbei: Die Fehlermeldung stand doch nicht alleine, oder? Spätestens am Ende der Fehlermeldungen muss doch irgendetwas von einem fehlenden End gestanden haben, bzw. dass "End." nicht korrekt ist.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: FillRect(Rect) geht und in der Unterprocedure geht es ni

  Alt 11. Jul 2003, 10:14
Nicht "fehlend" sondern zuviel.
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#7

hmm,

  Alt 11. Jul 2003, 10:18
@Tom
nicht wirklich, k.a. , ich hab in dem Projekt 87 Hints und 43 Warnings, da guck man nimmer so genau
  Mit Zitat antworten Zitat
Tom

Registriert seit: 7. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#8

Re: FillRect(Rect) geht und in der Unterprocedure geht es ni

  Alt 11. Jul 2003, 10:22
Dann solltest Du als erstes mal dafür sorgen, dass die Meldungen sich auf Null reduzieren. Schließlich möchte Dir der Compiler mit diesen etwas mitteilen.
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#9

hmm,

  Alt 11. Jul 2003, 10:32
[Warning] dlg_arbeitstagekalender.pas(45): Method 'Create' hides virtual method of base type 'TCustomForm' was soll ich gegen sowas machen ?

Und die Hints sind meist von Variablen die in Proceduren nimmer gebraucht werden etc.. Das übliche halt, damit hab ich keine Probleme.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

Re: hmm,

  Alt 11. Jul 2003, 11:13
Zitat von JoelH:
[Warning] dlg_arbeitstagekalender.pas(45): Method 'Create' hides virtual method of base type 'TCustomForm' was soll ich gegen sowas machen ?
Schreib ein override hinter den Konstruktor.


Zitat:
Und die Hints sind meist von Variablen die in Proceduren nimmer gebraucht werden etc.. Das übliche halt, damit hab ich keine Probleme.
Deine Anwendung aber eine Zeitbombe.
  Mit Zitat antworten Zitat
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 20:55 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