Thema: Delphi Variabeln Problem!

Einzelnen Beitrag anzeigen

Zwock

Registriert seit: 14. Sep 2005
Ort: Erlensee
20 Beiträge
 
#13

Re: Variabeln Problem!

  Alt 20. Sep 2005, 20:39
O.k! Habe das soweit verstanden, werde mich auch mit der empfohlenen "Lektüre" beschäftigen.
Nun, da das Programm läuft, ist mir jedoch aufgefallen, dass ich einen grundlegenden Denkfehler gemacht haben muss.

Ich erkläre schnell die Aufgabenstellung:

Wir sollten mit Shapes 3 Kreise machen, die als Ampel fungieren. Daneben >EIN< Button, der das Umschalten der Ampel steuert. Also wenn man das erste Mal klickt soll sie Rot werden, beim Zweiten mal dann Rot + Gelb, dann Grün, schließlich Gelb und zuletzt wieder Rot. Pro Klick soll die Änderung auftreten.

Mein Gedankengang: Ich lasse Pro Klick die Variable VSchalten um 1 Steigen, bei 0 wird Rot angezeigt, bei 1 Rot+Gelb, bei 2 dann Grün, bei 3 soll nur Gelb angezeigt werden, und schliesslich soll die Variable wieder auf 0 gesetzt werden, sie würde dann wieder Rot erscheinen und alles würde von vorne beginnen. Hier mein Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    SRot: TShape;
    SGruen: TShape;
    SGelb: TShape;
    BSchalten: TButton;
    procedure BSchaltenClick(Sender: TObject);
  private
    VSchalten: integer;
  public
    { Public-Deklarationen }
  end;

  var
  Form1: TForm1;


implementation

{$R *.dfm}



procedure TForm1.BSchaltenClick(Sender: TObject);


 begin
 VSchalten:= 0;
 inc(VSchalten);

  if VSchalten= 0 then
   begin
    SRot.Brush.Color := clred;
    SGelb.Brush.Color := clblack;
    SGruen.Brush.Color := clblack;
   end

  else if VSchalten= 1 then
   begin
    SRot.Brush.Color := clred;
    SGelb.Brush.Color := clyellow;
    SGruen.Brush.Color := clblack;
   end

 else if VSchalten= 2 then
  begin
   SRot.Brush.Color:= clblack;
   SGelb.Brush.Color:= clblack;
   SGruen.Brush.Color:= clgreen;
  end

  else if VSchalten= 3 then
   begin
    SRot.Brush.Color:= clblack;
    SGelb.Brush.Color:= clyellow;
    SGruen.Brush.Color:= clblack;
   end

   else if VSchalten= 4 then
    VSchalten := 0;
end;

end.
Jedoch zeigt er mir beim ersten klick Rot, dann blitzschnell RotGelb an, und bei weiteren Klicks geschieht garnichtsmehr... Vielleicht ist es ein bisschen sehr viel verlangt, aber kann mir da jemand weiterhelfeb?
Denke nie gedacht zu haben, denn das Denken der Gedanken ist gedankenloses Denken!
  Mit Zitat antworten Zitat