Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - mehrere Klicks! verschiedene Captions!
Dr. Wasserwurst - Di 04.12.07 20:40
Titel: mehrere Klicks! verschiedene Captions!
Hallo!!!
Also ich würde gern in Delphi!!
Einen Button anlegen und wenn man auf denn klickt soll sich die Caption auf "A" ändern und dann wenn man noch einmal klickt "B" dann "C" ... und immer so weiter. Kann mir vielleicht jemand sagen wie das Funktioniert??
Danke!!!
Moderiert von
Narses: Vokativitis behandelt ;)
Gahero - Di 04.12.07 20:41
Hier ein Tip: Mach ne Variable, die du pro klick erhöst. Dann fragst du ab, welchen wert sie hat und änderst dementsprechend die Caption!
Saubäär - Di 04.12.07 20:54
Hi,
ich würde es so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var chr: Char; begin chr := Button1.Caption[1]; if (Ord(chr) >= 65) and (Ord(chr) < 90) then Button1.Caption := Char(Ord(chr) + 1) else Button1.Caption := 'A'; end; |
wichtig: zur Designzeit die Caption z.B. auf 'A' setzen.
Gruß
Dr. Wasserwurst - Di 04.12.07 21:00
Titel: ?????
Ehm ich wünschte ich hätte verstanden was ihr mir damit sagen wollt aber ich hatte bisher noch nich viel mit Delphi zutun und kann deswegen noch nich so prof. damit üm!! :)
Marc. - Di 04.12.07 21:10
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var chr: Char; begin chr := Button1.Caption[1]; Zeichen if (Ord(chr) >= 65) and (Ord(chr) < 90) then Button1.Caption := Char(Ord(chr) + 1) else Button1.Caption := 'A'; end |
Strings beginnen übrigens bei 1. Arrays bei 0. ;)
Grüße,
Marc
Saubäär - Di 04.12.07 21:10
Okay, dann kommentiere ich mal meine Quelltext.
wie ich das verstanden habe, willst du die Buchstaben A,B,C,...,Z anzeigen (und wieder von vorne oder auch nicht - egal).
Wichtig für's Verständnis ist, dass jeder Buchstabe/Zahl/Sonderzeichen einen bestimmten Zahlenwert hat, den man mit der Funktion 'Ord()' herausbekommt. Jetzt wird vielleicht schon klar, dass der Buchstabe 'A' den Wert 65 und der Buchhstabe 'Z' den Wert 90 hat. Alle anderen Buchstaben liegen in diesem Intervall. Um den Zahlenwert wieder in einen Buchstaben umzuwandeln, steht uns die Funktion 'Char()' zur Verfügung. Nun zum Quelltext:
In der Variable 'chr' wird der Buchstabe gespeichert, den der Button gerade anzeigt. Liegt der Wert des Buchstaben im Interval 65..90 (A..Z) wird der Wert um eins erhöht und der Buchstabe als Caption auf dem Button angezeigt. Liegt der Buchstabe außerhalb des Intervalls, wird die Caption einfach wieder auf 'A' gesetzt.
Hoffe, ich konnte alle Klarheiten beseitigen ;)
Gruß
Dr. Wasserwurst - Di 04.12.07 21:50
Ah cool!! Danke habs verstanden!! :))
Aber wenn ich das Programm starte fängt es mit "L" na??
Marc. - Di 04.12.07 22:12
Löschen können nur Moderatoren und die entscheiden auch, ob ein Beitrag bestehen bleibt oder nicht. ;)
Dr. Wasserwurst hat folgendes geschrieben: |
Ah cool!! Danke habs verstanden!! :))
Aber wenn ich das Programm starte fängt es mit "L" na?? |
Ich vermute die Caption deines Buttons beginnt mit einem "K". Kann das sein? ;)
Grüße
Marc
Dr. Wasserwurst - Mi 05.12.07 12:06
...??
Ja das Stimmt meine Caption ist "Klick mich!!". Stimmt mein ertse Buchstabe ist ein "K" und dann zählt er von "K" hoch!! Okay?? Kann man das ändern?? oder ist es besser wenn ich denn Button gleich "A" nenn und ein Label mit "Klick mich!!" erstelle??
Blawen - Mi 05.12.07 13:04
Dr. Wasserwurst hat folgendes geschrieben: |
...??
Ja das Stimmt meine Caption ist "Klick mich!!". Stimmt mein ertse Buchstabe ist ein "K" und dann zählt er von "K" hoch!! Okay?? Kann man das ändern?? oder ist es besser wenn ich denn Button gleich "A" nenn und ein Label mit "Klick mich!!" erstelle?? |
Entweder du benennst die Caption um - oder Du machst eine Abfrage im Sinne:
Delphi-Quelltext
1:
| if Button1.Caption = 'klick mich' then Button1.Caption := 'A'; |
Atreyu - Mi 05.12.07 13:59
Eine Möglichkeit wäre es, ein Array vom Typ String anzulegen. Da kannst du dann alle Strings (Captions) unterbringen und mit einem Counter per Klick hochzählen lassen.
Dr. Wasserwurst - Mi 05.12.07 16:06
@Blawen
"Z"
Danke für eure Hilfe habs jetzt!!! :)
gehstock - Mi 05.12.07 18:24
Und warum arbeitest dun nicht mit "Tag"
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm5.Button1Click(Sender: TObject); begin if Button1.Tag = 0 then begin Button1.Tag := 1; Button1.Caption := 'Trennen'; end else if Button1.Tag = 1 then begin Button1.Caption := 'Verbinden'; Button1.Tag := 0; end; end; |
oder für 3 Zustände
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm5.Button1Click(Sender: TObject); begin if Button1.Tag = 0 then begin Button1.Tag := 1; Button1.Caption := 'Zustand 1'; end else if Button1.Tag = 1 then begin Button1.Caption := 'Zustand 2'; Button1.Tag := 2; end else if Button1.Tag = 2 then begin Button1.Caption := 'Zustand 0'; Button1.Tag := 0; end; end; |
Edit Achso Falsch Verstanden dachte du willst mehrere Funktionen auf euinen Button
Zorro - Do 06.12.07 21:20
Saubäär hat folgendes geschrieben: |
Hi,
ich würde es so machen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var chr: Char; begin chr := Button1.Caption[1]; if (Ord(chr) >= 65) and (Ord(chr) < 90) then Button1.Caption := Char(Ord(chr) + 1) else Button1.Caption := 'A'; end; |
wichtig: zur Designzeit die Caption z.B. auf 'A' setzen.
Gruß |
und nachdem Char ein ordinaler Typ ist, brauchts nicht einmal die Ord-Umwandlung:
Ch := button1.caption[1];
if (ch >= 'A') and (ch < 'Z')
then button1.caption := succ(ch)
else button1.caption := 'A' ;
Greetz
Zorro
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!