Hallo und

bei uns im Forum!
Erster Start siehe Anhang, da kommen ScrollBars.
Warum setzt du nicht einfach das Panel auf Align = alClient?
Und der Code...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm2.Timer1Timer(Sender: TObject); begin
repeat case i of 1: Begin p_berechne; p_zeichne; End;
End;
i := i; until x < xe
end; |
Wofür case gedacht ist, wisst ihr aber schon, oder?
Und dass
i := i; nichts bewirkt, sollte eigentlich auch einleuchten.
Jedenfalls habt ihr da eine Endlosschleife. Denn weder x noch xe werden irgendwo so verändert, dass die Bedingung erfüllt werden kann:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| Procedure p_berechne; begin
dx := xe - xs; dy := ye - ys; d := 2 * dy - dx; E := 2 * dy; NE := 2 * (dy-dx); x := xs; y := ys;
end;
Procedure p_zeichne; begin
q := 20; form2.Canvas.brush.color := clred; form2.canvas.floodfill(40 + q * x, 440 - q * y, clblack, fsborder);
if dy < 0 then begin d := d + E; x := x + 20; end else begin d := d + NE;
x := x + 20; y := y - 20;
end;
end; |
In p_zeichne wird x um 20 erhöht, beim nächsten Schleifendurchlauf in p_berechne wieder auf xs gesetzt, das nirgends verändert wird.
Da die Schleife so lange läuft bis x kleiner als xs wird, x aber immer nur um 20 erhöht und zurückgesetzt wird, wird die Schleife nie abbrechen...
Ich habe das Gefühl, dass ihr gar nicht so richtig wisst was ihr da eigentlich macht. Wozu braucht ihr z.B. den Timer (und in dem Timer dann die Schleife)?