Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Button zum WEITER-klicken erstellen


Delete - Do 26.06.08 18:47
Titel: Button zum WEITER-klicken erstellen
- Nachträglich durch die Entwickler-Ecke gelöscht -


Narses - Do 26.06.08 18:49

Moin und :welcome: im Forum!

Du brauchst einen Anwendungszustand [http://www.delphi-library.de/topic_auf+Ereignisse+in+FormAnwendungen+warten+AppState_67969.html]. :idea: ;)

cu
Narses


Delete - Do 26.06.08 20:16

- Nachträglich durch die Entwickler-Ecke gelöscht -


FinnO - Do 26.06.08 20:19

naja wie wärs mit ner globalen Zählervariable?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin
 inc(i); //Variable Erhöhen
 case i of
  1 : Anweisung1;
  2 : Anweisung2;
  3 : Anweisung3;
  4 : i := 0;
 end;
end;


Narses - Do 26.06.08 20:19

Moin!

user profile iconFrühlingsrolle hat folgendes geschrieben:
Das Beispiel ist schon verständlich nur hilft es mir bei meiner Aufgabe nicht !
Doch, tut es; aber du siehst es anscheinend nicht. ;) :idea:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  State: Integer = 0;

begin // Button-Klick
  case State of
    0: Label1.Caption := 'Hallo';
    1: Label1.Caption := 'du';
    2: Label1.Caption := 'da!';
  end;
  Inc(State);
cu
Narses

//EDIT:
user profile iconFinnO hat folgendes geschrieben:
naja wie wärs mit ner globalen Zählervariable?
Also eine Zustandsvariable. ;)


Tilman - Do 26.06.08 20:22

Dein Programm funzt net weil die Zeilen der reihe nach abgearbeitet werden. Also erst ist Label = Test1. Dann = Test2 usw., schlussendlich also Test4, und das alles viel schneller als das menschliche Auge es sehen könnte.

Für deine Zwecke brauchst du eine Integer-Variable, der du bei jedem Klick 1 hinzuzählst. Diese Variable muss aber global definiert sein (also ausserhalb der Klick-Prozedur).

In deiner Klick-Prozedur musst du dann eben schauen welchen Wert die Zustands-Variable hat. Das kannst du mit if machen, besser aber noch mit case.

// okay ich war eindeutig zu lahm. Aber bei dir, narses, sieht es so aus als würdest du die Zählvariable lokal definieren, das funzt so nicht.


FinnO - Do 26.06.08 20:24

siehe oben...


GericasS - Do 26.06.08 20:27

Könnte das auch so funktionieren ?

EDIT : sry einfahc nicht beachten...


Narses - Do 26.06.08 20:29

Moin!

user profile iconTilman hat folgendes geschrieben:
Aber bei dir, narses, sieht es so aus als würdest du die Zählvariable lokal definieren, das funzt so nicht.
Klar läuft das nicht, wenn man die Zustandsvariable lokal in der Methode deklariert. Aber ein bischen selbst denken wollen wir den Threadersteller doch schon noch lassen, oder? :zwinker: (abgesehen davon: da die Methode dann immer die erste Aktion ausführen würde, sollte man da schon drauf kommen können, hm? 8))

cu
Narses


Tilman - Do 26.06.08 20:41

user profile iconNarses hat folgendes geschrieben:
Klar läuft das nicht, [..] Aber ein bischen selbst denken wollen wir den Threadersteller doch schon noch lassen, oder?


Wat bisste für ne fiese möp :lol:

Aber hast schon recht. :wink:


ZeitGeist87 - Do 26.06.08 20:41

Warum extra ne Variable belegen...TButton hat dafür einen schönen Tag.. (Wink mitm Zaunpfahl)


Delete - Do 26.06.08 20:42

- Nachträglich durch die Entwickler-Ecke gelöscht -


FinnO - Do 26.06.08 20:42

^^ wäre ne möglichkeit... bloß am Ende denkt jemand, es ginge nur über den Tag


Narses - Do 26.06.08 20:44

Moin!

user profile iconZeitGeist87 hat folgendes geschrieben:
Warum extra ne Variable belegen...TButton hat dafür einen schönen Tag.. (Wink mitm Zaunpfahl)
Ich hatte schon drauf gewartet... :P
user profile iconFinnO hat folgendes geschrieben:
^^ wäre ne möglichkeit... bloß am Ende denkt jemand, es ginge nur über den Tag
...und genau deshalb nicht vorgeschlagen. ;)

btw: Ich habe den FAQ-Beitrag [http://www.delphi-library.de/topic_AppState+T1_67969.html] mal entsprechend erweitert, damit man das nicht immer wieder durchkauen muss. :D

cu
Narses


ZeitGeist87 - Do 26.06.08 20:51

Schuldigung..es war nur eine von vielen Möglichkeiten..


Tilman - Do 26.06.08 20:51

[ot]
Ausserdem ist Tag eh ungünstig weil das in jeder Kompo nur einmal vorkommt. Und der erste Quellcode oben spricht dafür das Tag später noch zum einsatz kommen könnte, wenn z.B. mehrere Buttons unterschieden werden sollen.
[/ot]


FinnO - Do 26.06.08 20:56

naja n integer hat ja auch son paar mehr stellen... wenn mans geschickt anstellt... (und nun nicht unbedingt beides gleichzeitig braucht :D) Okay es ist sinnbefreites unübesichtliches gefriemel... aber mit copy und pos...


Narses - Do 26.06.08 20:58

Moin!

@user profile iconFrühlingsrolle: Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? Danke. ;)

cu
Narses


Tilman - Do 26.06.08 20:58

user profile iconFinnO hat folgendes geschrieben:
naja n integer hat ja auch son paar mehr stellen... wenn mans geschickt anstellt... (und nun nicht unbedingt beides gleichzeitig braucht :D) Okay es ist sinnbefreites unübesichtliches gefriemel... aber mit copy und pos...


Man kann auch schön mit Zeigern auf Records arbeiten... du kannst den Brockhaus Band 1-32 unter einem Tag verstecken :wink:


FinnO - Do 26.06.08 21:01

naja der Tag ist dann:

1234567890

und dann mit Pointern den Text durchübersetzen... Buchstabe für Buchstabe?


Tilman - Do 26.06.08 21:04

user profile iconFinnO hat folgendes geschrieben:
naja der Tag ist dann:

1234567890

und dann mit Pointern den Text durchübersetzen... Buchstabe für Buchstabe?


weiß net was du damit meinst.

1234567890 wäre eine Speicheradresse, und unter der kann dann ein Objekt "tBrockhaus" liegen (Beispielsweise).


FinnO - Do 26.06.08 21:06

nee das is ja uncool...

du müsstest die Buchstaben in Zahlen umwandeln - a = 1, b = 2

und dann mit ner zuweisung (wie komm ich da auf pointer^^) aus dem Tag den Text zusammenfriemeln...

wenns b is : copy(IntToStr(Tag),2,1);