![]() |
ProgressBar wird nur 1x ausgeführt
Hi!
Also ich will 2 Bilder rotieren (ist eig. eine dynamische Anzahl). Da allerdings je nach Userwunsch per Checkbox gefragt wird, ob rotiert werden soll, frag ich das in einer Schleife ab. Die Prozedur sieht so aus(die ShowMessage ist zur Fehlersuche):
Delphi-Quellcode:
Ich bekomm durch die ShowMessage sowohl eine 0 als auch eine 1.
procedure TForm1.Button7Click(Sender: TObject);
var n: integer; begin for n:=0 to high(buttons) do begin if (n<=Form1.ComboBox1.ItemIndex+1) AND (checkboxen[n].Checked=true) then begin Form1.Rotate(bitmaps[n]); ShowMessage(IntToStr(n)); end; end; end; Das heisst, die Schleife wird 2x durchlaufen, so wie es gewollt ist. Die Funktion wird auch tatsächlich 2x ausgeführt. Aber wieso läuft die Progressbar nur einmal? Die Position setz ich wieder auf 0 zurück! Nach dem 1. Durchlauf bleibt die ProgressBar einfach auf 0 und es wird nichts gemacht. (sprich es wird nicht rotiert!!) Die Rotate-prozedur ist folgende(vielleicht nicht die beste und eleganteste lösung):
Delphi-Quellcode:
Die Funktion wird wie gesagt 2x ausgeführt, aber nur 1x wird rotiert (beim 2. scheint er die i und j schleifen nicht mehr durchzulaufen)
procedure TForm1.Rotate(src: TBitmap);
var i,j: integer; bmp: TBitmap; begin Form1.ProgressBar1.Position := 0; Form1.ProgressBar1.Min := 0; Form1.ProgressBar1.Max := src.Width; bmp := TBitmap.Create(); bmp.Width := src.Width; bmp.Height := src.Height; for i:=0 to src.Width do begin Form1.ProgressBar1.StepIt; for j:=0 to src.Height do begin bmp.Canvas.Pixels[bmp.Width-i,bmp.Height-j] := src.Canvas.Pixels[i,j]; end; end; src.Assign(bmp); bmp.Free; Form1.ProgressBar1.Position := 0; end; hat jemand eine idee warum das sein kann? Ich hab nun alles durchgeschaut und finde keinen fehler :| air (sorry für den etwas langen post) |
Re: ProgressBar wird nur 1x ausgeführt
Hi,
setz doch mal nen Breakpoint bei (hier) Zeile 14 und schau, welchen Wert src.Width jeweils hat und (somit) vor allem ob die Schleife durchlaufen wird. (Breakpoint mit F5, schrittweise durch Code gehen mit F7/F8 ) Gruß Stephan :dance: |
Re: ProgressBar wird nur 1x ausgeführt
hm...src.Width hat tatsächlich einen Wert von 0 beim 2. durchlauf...
ich schau mir mal eben die lade-funktion an air /edit: och man bin ich blöd. ich hab in der 2. lade-funktion auch bitmaps[0] geladen anstatt bitmaps[1] daran dürfte es wohl zu 99,99999999% liegen. ich änder ebn und teste air edit2: ok...daran lag es. ich könnte mich ohrfeigen :D eine gute stunde such ich danach, lass mir alles ausgeben, aber src.Width nicht...nochmals danke :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz