AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer macht nicht was er machen soll?!

Ein Thema von Hazel · begonnen am 6. Nov 2009 · letzter Beitrag vom 7. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Hazel

Registriert seit: 9. Okt 2009
Ort: Berlin
5 Beiträge
 
#1

Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 11:17
Hallo,
bin neu in Delphi und habe von meinem "Lehrer" eine Aufgabe bekommen eine Kreuzung zu programmieren mit Ampeln die per Timer sich aktivieren, aber leider macht der Timer das nicht.

Hier mal mein Code:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Button1: TButton;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    Panel10: TPanel;
    Panel11: TPanel;
    Panel12: TPanel;
    Panel13: TPanel;
    Panel14: TPanel;
    Panel15: TPanel;
    Panel16: TPanel;
    Panel17: TPanel;
    Panel18: TPanel;
    Panel19: TPanel;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button2: TButton;
    Timer1: TTimer;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    Image10: TImage;
    Image11: TImage;
    Image12: TImage;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
      private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Visible := true;
Image2.Visible := true;
Image3.Visible := true;
Image4.Visible := true;
Image5.Visible := false;
Image6.Visible := false;
Image7.Visible := false;
Image8.Visible := false;
Image9.Visible := false;
Image10.Visible := false;
Image11.Visible := false;
Image12.Visible := false;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//Platzhalter
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If
Image1.Visible = True and
Image2.Visible = True and
Image3.Visible = true and
Image4.Visible = true
then
begin
Image1.Visible := false;
Image2.Visible := false;
Image3.Visible := false;
Image4.Visible := false;
Image5.Visible := True;
Image6.Visible := false;
Image7.Visible := false;
Image8.Visible := True;
Image9.Visible := false;
Image10.Visible := false;
Image11.Visible := false;
Image12.Visible := false;
end;
end;


end.
Also ich drücke einen Button, der Alle Bilder resettet und das so aussehen lassen soll wie es ist.
Das funktioniert ja auch.
Dann drück ich den nächsten Button der den Timer aktivieren soll.
Hab auch beim Timer im Obejekt insperktor den OneTimer auf Button 3 gestellt, aber es passiert einfach nichts...
Interval auf 3000 gestellt.
Was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 11:33
Du bist nicht der erste, der eine Ampel programmiert. Such einfach mal nach Delphi-Referenz durchsuchentimer ampel und du solltest genug Lösungen finden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 11:35
Abgesehen davon, was Michael geschrieben hat: Was soll denn passieren? Dein Timer überprüft alle 3 Sekunden (ich dachte das höchste Timerintervall wären 1000 ms? [edit] Dank Neutral General wissen wir es ja jetzt besser Aber ich meine, dunkel in erinnerung zu haben, dass zumindest der Objektinspektor bei mir in irgendeiner Delphi Version mal meinte, dass der höchste Wert 1000 wäre, kann das sein?[/edit]) ob die bilder 1,2,3,4 sichtbar sind und falls ja, werden sie unsichtbar. D.h. der Timer wird die Bilder anfangs auf unsichtbar stellen und dann, im nächsten durchlauf nix mehr zu tun haben...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#4

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 11:37
Auch wenn du noch Anfänger bist solltest du ggf. an der Übersicht deiner Komponenten arbeiten. Mich würds nämlich mal interessieren ob du in 2 Wochen noch weißt was Panel19 für eine Funktion hat

Am Besten wäre es in deinem Fall auch eine eigene Klasse (TAmpel z.B.) zu erstellen, aber vermutlich seid ihr noch nicht bei der OOP angekommen.
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 11:38
[OT]: Timer.Interval = Cardinal.

Also kannst du das Interval auch bis maximal High(Cardinal) setzen

Zitat:
Auch wenn du noch Anfänger bist solltest du ggf. an der Übersicht deiner Komponenten arbeiten. Mich würds nämlich mal interessieren ob du in 2 Wochen noch weißt was Panel19 für eine Funktion hat
In meinem ersten größeren Programm gab es ein "Image1013" und einen "Timer31"
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 11:48
Zitat von Neutral General:
In meinem ersten größeren Programm gab es ein "Image1013" und einen "Timer31"
[OT] Wofür denn bitte 31 Timer? =D[/OT]
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 12:30
Um nochmal auf die Frage zurückzukommen: der Timer macht ja nur dann etwas, wenn die Images 1 bis 4 sichtbar sind. Wenn nicht, dann passiert eben nichts. Übrigens solltest Du Dir gleich am Anfang eine nachvollziehbare Einrückung an- und Vergleiche auf true abgewöhnen. Dann könnte Dein Timer-Code z.B. so aussehen:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  If Image1.Visible and Image2.Visible and Image3.Visible and Image4.Visible then
  begin
    Image1.Visible := false;
    Image2.Visible := false;
    Image3.Visible := false;
    Image4.Visible := false;
    Image5.Visible := True;
    Image6.Visible := false;
    Image7.Visible := false;
    Image8.Visible := True;
    Image9.Visible := false;
    Image10.Visible := false;
    Image11.Visible := false;
    Image12.Visible := false;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 12:44
Zitat von Forlan:
Zitat von Neutral General:
In meinem ersten größeren Programm gab es ein "Image1013" und einen "Timer31"
[OT] Wofür denn bitte 31 Timer? =D[/OT]
Ach.. war mein erster 2D-Shooter.. Da musste ganz viel getimed werden
Damals hab ich Strings auch nicht in Variablen gespeichert, sondern in unsichtbaren Labels
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Hazel

Registriert seit: 9. Okt 2009
Ort: Berlin
5 Beiträge
 
#9

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 14:02
Tut mir Leid, aber verstehe immernoch nicht so richtig, zwischen den ganzem Ot Gespamme. .P
Die ersten 4 Image sind ja da, also die sieht man ja, da cih ja vorher die Button gedrückt habe der nur die 4 Bilder sichtbar macht, aber der Timer macht dann nicht die nächsten 2 Bilder sichtbar und die anderen alle weg.
Sry, das ich so hol bin, was muss ich genau anders machen?

EDIT: Die Panels machen garnicht sind nur Graß bzw Mittelstreifen.
  Mit Zitat antworten Zitat
ATSV

Registriert seit: 8. Aug 2008
95 Beiträge
 
Delphi 7 Professional
 
#10

Re: Timer macht nicht was er machen soll?!

  Alt 6. Nov 2009, 14:09
Ist der Timer auch wirklich eingeschaltet?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 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