![]() |
Bowling(anfänger)
mal wieder ein anfänger problem ich möchte dass sich mein button 1 caption: namen einlesen wenn man ihn zum ersten mal clickt in caption:bestätigen umwandelt und wenn man ihn zum zweitenmal anklickt sich in caption:Bitte werfen umwandelt
Delphi-Quellcode:
Grüße
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; Button2: TButton; Button3: TButton; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; S1,S2,S3,S4,S5:String; Punkte,j,Wuerfe:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a,n,i:integer;//das sind die zeilen begin j:=0+n; if j=0 then for i:=0 to 1 do begin Button1.Caption:='Bestätigen.'; inc (a); n:=1; end; S1:=Edit1.Text; S2:=Edit2.Text; S3:=Edit3.Text; S4:=Edit4.Text; S5:=Edit5.Text; memo1.lines.add('Die namen sind:'+S1+','+S2+','+S3+','+S4+'und '+S5+' ist das richtig?'); If a = 1 then Button1.Caption:='Bitte werfen'; end; end. christian |
Re: Bowling(anfänger)
Hallo,
suchst du sowas:
Delphi-Quellcode:
?
procedure TForm1.Button1Click(Sender: TObject);
begin if button1.caption='namen einlesen' then Begin // mache was.... button1.caption='bestätigen' exit; end else if button1.caption='bestätigen' then Begin // mache was.... button1.caption='Bitte werfen' exit; end else if button1.caption='Bitte werfen' then Begin //mache was... end; end; MFG Steffen |
Re: Bowling(anfänger)
Hi,
bist du sicher das du nur das willst? Momentan sieht das so aus, als ob der Knopp bei jedem klick auch eine andere Aktion durchführen soll, also... .. du kannst für solche dinge die Eigenschaft TAG des Buttons nutzen. Belege das einfach im Objektinspektor mit 0 vor und dann machste so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin case Button1.Tag of 1: begin Button1.Caption := 'Aktion3'; Button1.Tag := 2; // hier weitere Dinge die beim ZWEITEN Klick passieren sollen; end; 2: begin Button1.Caption := 'Aktion1'; Button1.Tag := 0; // Also beim nächsten klicken wieder Aktion 1 // hier weitere Dinge die beim DRITTEM Klick passieren sollen; end; else begin Button1.Caption := 'Aktion2'; Button1.Tag := 1; // hier weitere Dinge die beim ERSTEN Klick passieren sollen; end; end; end; |
Re: Bowling(anfänger)
Naja, prinzipiell machst du ja nix anderes. Die zusätzl. Zeile für die Tags kannst sparen.
MFG Steffen |
Re: Bowling(anfänger)
Hi,
klar kann man sich die sparen, ist vielleicht auch nur ne Esthetik-Frage. Dein Source funktioniert genau so, da geb ich dir recht. Gruß angos |
Re: Bowling(anfänger)
Hallo,
wenn es schon so variabel gehalten wird, dann sollte man es auch konsequent machen. Benutze für jede dieser Aktionen eine eigene Prozedur, und die jeweils aktuelle wird (genauso wie der Text) dem Button zugeordnet.
Delphi-Quellcode:
Jede dieser Prozeduren bekommt die betreffenden Maßnahmen und ändert abschließend den Button, so ähnlich, wie die vorigen Antworten es innerhalb der "großen" Prozedur gemacht haben.
procedure EinlesenClick(Sender: TObject);
procedure BestaetigenClick(Sender: TObject); procedure WerfenClick(Sender: TObject);
Delphi-Quellcode:
Gruß Jürgen
procedure EinlesenClick(Sender: TObject);
begin // mache was.... // Button auf den nächsten Schritt setzen button1.Caption := 'bestätigen'; button1.OnClick := BestaetigenClick; // oder button1.Click? ich weiß nicht mehr genau end; PS. Was hat diese Frage eigentlich mit Internet oder LAN oder ASP.NET zu tun? Das Thema gehört doch stinknormal zu VCL/Controls. |
Re: Bowling(anfänger)
Zitat:
|
Re: Bowling(anfänger)
Zitat:
Edit: Die Knopfbeschriftungsalternativen habe ich natürlich als Ressourcestrings einmalig definiert ;) Sherlock |
Re: Bowling(anfänger)
Wenn man im Designer die Beschriftung ändert, z.B. durch Localizer, Gettext o.ä, oder einfach, weil dein Teamkamerad deine Beschriftung blöd findet, funktioniert deine Logik nicht mehr.
Es gilt: Visuelle und Logische Eigenschaften sind strikt zu trennen. Hier wird dieser Grundsatz verletzt: Eine visuelle Eigenschaft (hier: die Buttonbeschriftung) ist die Grundlage der Entscheidung der auszuführenden Aktion. Klar funktioniert dein Code. Aber er ist anfällig, sehr sogar. PS: Dein Edit kommt zu spät, dir ist das also schon selber klar geworden. Dann steh wenigstens dazu :zwinker: Dessenungeachtet ist es auch so miserabler Programmierstil. |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Internet / LAN / ASP.NET" nach "Sonstige Fragen zu Delphi" verschoben.
Es handelt sich nicht um ein Internet-/LAN-Problem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz