Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einen Vorgang Automatisieren (https://www.delphipraxis.net/54147-einen-vorgang-automatisieren.html)

Christian18 28. Sep 2005 19:59


Einen Vorgang Automatisieren
 
Hallo,

ich habe mal eine Frage. Wie kann ich folgenden Code Automatisieren. Ich will nicht alle IF Anweisungen definieren. Vieleicht kann man das auch anders machen. Hab ihr eine Lösung???

so funktioniert es zwar, aber ich habe keine lust alle IF Anweisungen zu definieren. Wären dann nich ca. 27 IF Anweisungen
Delphi-Quellcode:
  var i   : TImage;
begin
  i:=Image1;
  i.Canvas.Pen.Color:=clRed;

  if (x>=2) and (y>=20) and (x<=20) and (y<=22) then
    begin
      i.Canvas.Rectangle(2, 20, 20, 22);
    end
  else
    begin
      if (x>=22) and (y>=20) and (x<=40) and (y<=22) then
        begin
          i.Canvas.Rectangle(22, 20,40, 22);
        end
      else
        begin
          if (x>=42) and (y>=20) and (x<=60) and (y<=22) then
            begin
              i.Canvas.Rectangle(42, 20,60, 22);
            end
          else
            begin
              spielfeld_zeichnen(Sender);
            end;
        end;
    end;
und hier jetzt meine versuchsvariante. funktioniert aber leider nicht.
Delphi-Quellcode:
  var i   : TImage;
      k   : Integer;
begin
  i:=Image1;
  i.Canvas.Pen.Color:=clRed;

  for k:=0 to 10 do
    begin
      if (x>=k * 20 + 2) and (y>=20) and (x<=k * 20 + 22) and (y<=22) then
        begin
          i.Canvas.Rectangle(k * 20 + 2, 20, k * 20 + 22, 22);
        end
      else
        begin
          spielfeld_zeichnen(Sender);
        end;
    end;

Eichhoernchen 28. Sep 2005 20:16

Re: Einen Vorgang Automatisieren
 
Delphi-Quellcode:
procedure...
var a : integer;
    i   : TImage;
Begin
  i:=Image1;
  i.Canvas.Pen.Color:=clRed;
a := 20;
while a <= 60 do
 Begin
  if ( x >= a-18 ) and (y>=20) and (x <= a) and (y<= 22)
    then Begin
          i.canvas.rectangle( a-18, 20, a, 22);
          exit;
         end;  
 inc(a, 20);
 end;
 spielfeld_zeichnen(Sender);
end;

So vielleicht, ich habs jetzt nicht ausprobiert, aber erscheint mir logisch

Khabarakh 28. Sep 2005 20:37

Re: Einen Vorgang Automatisieren
 
Wozu die Schleife?
Delphi-Quellcode:
Dec(x, 1); // für Endziffern 1..9 statt 2..0
Dec(y, 1);
if (x div 20 <> 0) and (y div 20 <> 0) then // keine 0, 20, 40... (= 1, 21, 41...)
  Canvas.Rectangle(x div 20 * 20 + 2, y div 20 * 20 + 2, x div 20 * 20 + 20, y div 20 * 20 + 20);
Ungetestet und ohne Garantie :wink: .


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