hast du bemerkt, dass deine If-Abfrage in der For-Schleife steckt?
glaube das sollte nicht so sein, aber mit richtiger Einrückung würde man das sehen
.
ansonsten 3 Fragen:
- wie wird Zaehler initialisiert
- werden vorher panels erstellt (außerhalb vom timer)
- hast du mit dem debugger schon 10 in der variable gesehen?
denn: mit jedem erstellten panel wird der Zähler dekrementiert (geht übrigends mit
dec(zaehler) kürzer). selbst wenn du alle panels wegklickst wirst du so nie 10 Punkte erreichen, da diese 10 punkte vorher schon vom Zähler abgezogen wurden.
Delphi-Quellcode:
procedure TFPanel1.Timer1Timer(Sender: TObject);
var i: integer;
begin
Panel:= TPanel.Create (FPanel1);
Panel.Color:= clYellow;
Panel.Caption:= 'F';
Panel.Width:= 49;
Panel.Height:= 33;
Panel.Left:= Random(ShSpiel.Width-60)+30;
Panel.Top:= Random(ShSpiel.Height-50)+30;
Panel.Parent:= FPanel1;
Panel.OnClick:= PanelWeg;
Zaehler:= Zaehler-1;
for i:=ComponentCount-1 downto 0 do
begin
if Components[i] is TPanel then
begin
if Panel.Visible= True then
begin
TPanel(Components[i]).Left:= Random(ShSpiel.Width-60)+30;
TPanel(Components[i]).Top:= Random(ShSpiel.Height-50)+30;
Edit1.Text:=IntToStr(Zaehler)+' '+'Punkte';
end else
begin
TPanel(Components[i]).Destroy;
end;
end;
if Zaehler = 0 then
begin
Timer1.Enabled:=False;
ShowMessage('Verloren');
break;
end else if Zaehler = 10 then
begin
Timer1.Enabled:=False;
ShowMessage('Gewonnen');
break;
end;
end; //for
end;
HTH Frank