AGB  ·  Datenschutz  ·  Impressum  







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

Bowling(anfänger)

Ein Thema von Arathok · begonnen am 19. Jun 2008 · letzter Beitrag vom 19. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Arathok

Registriert seit: 29. Mai 2008
Ort: Saalfeld
13 Beiträge
 
#1

Bowling(anfänger)

  Alt 19. Jun 2008, 11:17
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:
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.
Grüße
christian
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#2

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 11:26
Hallo,

suchst du sowas:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if button1.caption='namen einlesenthen
  Begin
    // mache was....

    button1.caption='bestätigen'
    exit;
  end
else if button1.caption='bestätigenthen
  Begin
    // mache was....

    button1.caption='Bitte werfen'
    exit;
end

else if button1.caption='Bitte werfenthen
Begin
    //mache was...

end;
end;
?

MFG
Steffen
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 11:27
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;
Ansgar
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#4

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 11:37
Naja, prinzipiell machst du ja nix anderes. Die zusätzl. Zeile für die Tags kannst sparen.

MFG
Steffen
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 12:18
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
Ansgar
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 12:35
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:
procedure EinlesenClick(Sender: TObject);
procedure BestaetigenClick(Sender: TObject);
procedure WerfenClick(Sender: TObject);
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.
Delphi-Quellcode:
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;
Gruß Jürgen

PS. Was hat diese Frage eigentlich mit Internet oder LAN oder ASP.NET zu tun? Das Thema gehört doch stinknormal zu VCL/Controls.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 13:13
Zitat von WIng2005:
Naja, prinzipiell machst du ja nix anderes. Die zusätzl. Zeile für die Tags kannst sparen.
Nein! Ändere die Beschriftung eines Knopfes und schon hast Du ein Problem. Das mit dem "Tag" ist schon die bessere Wahl.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.764 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 13:21
Zitat von alzaimar:
Zitat von WIng2005:
Naja, prinzipiell machst du ja nix anderes. Die zusätzl. Zeile für die Tags kannst sparen.
Nein! Ändere die Beschriftung eines Knopfes und schon hast Du ein Problem. Das mit dem "Tag" ist schon die bessere Wahl.
Bitte eine Erklärung dazu, warum das so ist. Für den seltenen Fall, daß ich sowas brauche, hab ich es immer ohne Tags gemacht (ohne Probleme).

Edit: Die Knopfbeschriftungsalternativen habe ich natürlich als Ressourcestrings einmalig definiert

Sherlock
Oliver
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Bowling(anfänger)

  Alt 19. Jun 2008, 13:26
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

Dessenungeachtet ist es auch so miserabler Programmierstil.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
19. Jun 2008, 13:34
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.
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 21:53 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