Autor Beitrag
Dr. Wasserwurst
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Di 04.12.07 20:40 
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 user profile iconNarses: Vokativitis behandelt ;)

_________________
LG>>>>>>>Dr. Wasserwurst
Gahero
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 193

Win Vista HP 64bit
Delphi 2007 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Di 04.12.07 20:54 
Hi,

ich würde es so machen:

ausblenden 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) >= 65and (Ord(chr) < 90then
  Button1.Caption := Char(Ord(chr) + 1)
 else
  Button1.Caption := 'A';
end;



wichtig: zur Designzeit die Caption z.B. auf 'A' setzen.

Gruß
Dr. Wasserwurst Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Di 04.12.07 21:10 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var chr: Char; // Deklaration der Variablen chr als Typ Char (einzelnes Zeichen)
begin
 // Caption gibt dir einen String (eine Kette von Zeichen) zurück. Mit den Eckigen-Klammern [] greifst du auf das Zeichen mit dem Index X innerhalb des Strings zu.
 chr := Button1.Caption[1];   Zeichen
// Ord steht für ordinal, soll heißen: Wandle das Zeichen in seinen ASCII-Code um. 65 ist hierbei der ASCII Code von A, 90 der von Z! 
 if (Ord(chr) >= 65and (Ord(chr) < 90then  // Ist die Bedingung erfüllt

  Button1.Caption := Char(Ord(chr) + 1// "Erhöht" das Zeichen: Wandelt Chr in seinen ASCII Code um, erhört diesen um 1 (+1) und wandelt die Zahl wieder in das entsprechende Zeichen um
 else  // Ist die Bedingung nicht erfüllt, sind wir also schon über das Z hinaus, so setze die Caption wieder auf A
  Button1.Caption := 'A';
end

Strings beginnen übrigens bei 1. Arrays bei 0. ;)

Grüße,
Marc


Zuletzt bearbeitet von Marc. am Di 04.12.07 21:14, insgesamt 3-mal bearbeitet
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Di 04.12.07 21:50 
Ah cool!! Danke habs verstanden!! :))
Aber wenn ich das Programm starte fängt es mit "L" na??

_________________
LG>>>>>>>Dr. Wasserwurst
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Di 04.12.07 22:12 
Löschen können nur Moderatoren und die entscheiden auch, ob ein Beitrag bestehen bleibt oder nicht. ;)
user profile iconDr. 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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??

_________________
LG>>>>>>>Dr. Wasserwurst
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Mi 05.12.07 13:04 
user profile iconDr. 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:
ausblenden Delphi-Quelltext
1:
if Button1.Caption = 'klick mich' then Button1.Caption := 'A';					

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
Atreyu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137


Delphi 7 Enterprise
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mi 05.12.07 16:06 
@Blawen
"Z"

Danke für eure Hilfe habs jetzt!!! :)

_________________
LG>>>>>>>Dr. Wasserwurst
gehstock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19
Erhaltene Danke: 2



BeitragVerfasst: Mi 05.12.07 18:24 
Und warum arbeitest dun nicht mit "Tag"
ausblenden 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
ausblenden 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';//Ausgangszustand
             Button1.Tag := 0;
            end;
end;



Edit Achso Falsch Verstanden dachte du willst mehrere Funktionen auf euinen Button
Zorro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Win 2000, Win XP Pro
Delphi 7 Architect
BeitragVerfasst: Do 06.12.07 21:20 
user profile iconSaubäär hat folgendes geschrieben:
Hi,

ich würde es so machen:

ausblenden 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) >= 65and (Ord(chr) < 90then
  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