Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi fillrect funktioniert nur mit konstanten? (https://www.delphipraxis.net/93018-fillrect-funktioniert-nur-mit-konstanten.html)

richard_boderich 30. Mai 2007 12:14


fillrect funktioniert nur mit konstanten?
 
moin,

wenn ich ein recteck mit fillrect so zeichne funktioniert das.
Delphi-Quellcode:
image1.canvas.fillrect(rect(10,10,100,100);
wenn ich es so mach nicht.
Delphi-Quellcode:
image1.canvas.fillrect(rect(x,10, x+10, 100);
vielleicht kann mir jemand sagen warum? immer wenn ich variablen statt der konstanten nehm tritt das auf. ich habe es auch schon so versucht. dabei
steht der wert der variablen help ja eindeutigt fest. es geht aber trotzdem nicht.

Delphi-Quellcode:
help:=x+10;
image1.canvas.fillrect(rect(x,10, help, 100);
gruß richard

Luckie 30. Mai 2007 12:15

Re: fillrect funktioniert nur mit konstanten?
 
Fehlt da nicht noch eine schliessende Klammer?

richard_boderich 30. Mai 2007 12:26

Re: fillrect funktioniert nur mit konstanten?
 
ja haste recht aber daran liegt das nicht. ist nur ein tippfehler. hab grade nochmal den quelltext überprüft. achja und was ich noch rausgefunden habe.
wenn ich es so schreibe.

Delphi-Quellcode:
image1.canvas.fillrect(rect(10,10, help, 100));
dann zeichnet er es komischerweise, aber für help nimmt er irgendeinen wert,jedoch nicht den wert in help. z.b. wenn help den wert 15 hat, zeichnet
er immer durchgehend nach rechts über die gesamte breite des image. das kuriose ist, wenn ich debugge steht in help der korrekte wert. zeichen tut er aber trotzdem falsch. als ob er beim zeichnen irrsinnig hohe werte nimmt bzw.

gruß richard

Luckie 30. Mai 2007 12:32

Re: fillrect funktioniert nur mit konstanten?
 
Geht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c, d: Integer;
begin
  Image1.Canvas.Brush.Color := clRed;
  Image1.Canvas.Brush.Style := bsSolid;
  a := 10;
  b := 10;
  c := 25;
  d := 25;
  Image1.Canvas.FillRect(rect(a, b, c, d));
end;

richard_boderich 30. Mai 2007 12:36

Re: fillrect funktioniert nur mit konstanten?
 
@ luckie

führe mal eine operation mit einer deiner variablen durch. z.B.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c, d: Integer;
begin
  Image1.Canvas.Brush.Color := clRed;
  Image1.Canvas.Brush.Style := bsSolid;
  a := 10;
  b := 10;
  c := 25;
  d := 25;
  Image1.Canvas.FillRect(rect(a, b, c-50, d));
end;
oder so

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c, d: Integer;
begin
  Image1.Canvas.Brush.Color := clRed;
  Image1.Canvas.Brush.Style := bsSolid;
  a := 10;
  b := 10;
  c := 25;
  d := c+b;
  Image1.Canvas.FillRect(rect(a, b, c, d));
end;
und teste nochmal bitte

richard

Luckie 30. Mai 2007 12:41

Re: fillrect funktioniert nur mit konstanten?
 
Geht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c, d: Integer;
begin
  Image1.Canvas.Brush.Color := clRed;
  Image1.Canvas.Brush.Style := bsSolid;
  a := 10;
  b := 10;
  c := 150;
  d := 25;
  Image1.Canvas.FillRect(rect(a, b, c-100, d));
end;

richard_boderich 30. Mai 2007 12:45

Re: fillrect funktioniert nur mit konstanten?
 
@luckie
welche deplhi version hast du ? hast du eine idee woran es noch liegen kann. wie gesagt in help steht der richtige wert, das hab ich mit f8 überprüft.

richard

Luckie 30. Mai 2007 12:57

Re: fillrect funktioniert nur mit konstanten?
 
Getestet mit Delphi 6 Professional. Im BSD2006 habe ich gerade ein Projekt auf und will das jetzt nicht schliessen.

Helmi 30. Mai 2007 13:00

Re: fillrect funktioniert nur mit konstanten?
 
Hallo,

ich hab Luckies Cods, aus Neugier, mal in Delphi7 Pro getestet. Und dort funktioniert er auch!

richard_boderich 30. Mai 2007 13:00

Re: fillrect funktioniert nur mit konstanten?
 
@luckie

ja is ok. hab trotzdem vielen dank. es funktioniert jetzt komischer weise auf einmal. das dumme ist nur ich weis nicht warum. naja egal.
also nochmals dank an dich für deine unterstützung. :)

gruß richard

//edit auch dank an dich helmi ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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