Einzelnen Beitrag anzeigen

Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#1

TLabel.Caption wird nicht geändert?

  Alt 19. Jun 2013, 14:54
Delphi-Version: XE2
Hallo leute ^^
Habe mir heute die Delphi XE4 Testversion geholt um endlich wieder Mal Delphi ausprobieren zu können.
Ich habe vor Delphie so zu lernen, wie ich jede andere Programmiersprache auch gelernt habe. Mit Learning-By-Doing

Ich habe ein "Zahlen-Raten" Programm geschrieben. Auf die Idee kam ich, da es auch mein erstes Programm war als ich mit Delphi 3 angefangen habe ^^ Ich wollte es jedoch noch ein bisschen komplexer und "vollständiger" haben und habe daher noch Leben, Versuche sowie eine Konfiguration eingebaut. Das meiste funktioniert, jedoch wird bei einem Versuch mein Label nicht verändert um zu sehen wie der Stand der Leben und Versuche aussieht.

Was ich falsch gemacht habe, weiss ich leider auch nicht :/

Delphi-Quellcode:
unit GetTheNr;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TGetTheNumber = class(TForm)
    Label1: TLabel;
    LabelLives: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    EditLives: TEdit;
    Button1: TButton;
    Label5: TLabel;
    Label6: TLabel;
    REasy: TRadioButton;
    RMiddle: TRadioButton;
    RHard: TRadioButton;
    RCustom: TRadioButton;
    Panel1: TPanel;
    Restart: TButton;
    EditNumber: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    GuessBox: TEdit;
    Label9: TLabel;
    Result: TLabel;
    procedure RCustomClick(Sender: TObject);
    procedure RMiddleClick(Sender: TObject);
    procedure RHardClick(Sender: TObject);
    procedure REasyClick(Sender: TObject);
    procedure RestartClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  GetTheNumber: TGetTheNumber;
  number, lives, tries: integer; // Die gebrauchten Variabeln.
implementation

{$R *.dfm}

// Zahl überprüfen
// Status ausgeben
// Leben und Versuche berechnen
procedure TGetTheNumber.Button1Click(Sender: TObject);
var
guess:integer; // Damit ich den Inhalt der Textbox in einer Variable speichern kann.
begin
  // Und da geschiehts auch schon
  guess := StrToInt(GuessBox.Text);

  // Wenn die eingegebene Zahl zu gross ist,...
  if number > guess then
  begin
    result.Caption := 'Deine Zahl ist zu klein.';
    lives := lives - 1;
    tries := tries + 1;
  end
  // Zu klein...
  else if number < guess then
  begin
    result.Caption := 'Deine Zahl ist zu gross';
    lives := lives - 1;
    tries := tries + 1;
  end
  // Richtig!!!
  else if number = guess then
  begin
    result.Caption := 'Richtig!';
    tries := tries + 1;
  end;
  //////////////////////////////////////////
  // Das passiert irgendwie nicht: //
  label3.Caption := tries.ToString(); //
  label8.Caption := lives.ToString(); //
  //////////////////////////////////////////
end;

procedure TGetTheNumber.RCustomClick(Sender: TObject);
begin
  // Wenn Benutzerdefiniert eingestellt ist, sollen die Textboxen erscheinen
  if RCustom.Checked = true then begin
    EditLives.Visible := true;
    EditNumber.Visible := true;
  end
  // Sonst nicht
  else begin
    EditLives.Visible := false;
    EditNumber.Visible := false;
  end;


end;

procedure TGetTheNumber.REasyClick(Sender: TObject);
begin
  EditLives.Visible := false;
  EditNumber.Visible := false;
end;

procedure TGetTheNumber.RHardClick(Sender: TObject);
begin
  EditLives.Visible := false;
  EditNumber.Visible := false;
end;

procedure TGetTheNumber.RMiddleClick(Sender: TObject);
begin
  EditLives.Visible := false;
  EditNumber.Visible := false;
end;
// ENDE DER CUSTOM TEXTBOXen LÖSUNG.

// Wenn man auf übernehmen klickt
procedure TGetTheNumber.RestartClick(Sender: TObject);
begin
  // Wenn Custom
  if RCustom.Checked = true then
  begin
    // Eigene Daten übernehmen
    Randomize();
    number := Round(Random() * StrToInt(EditNumber.Text));
    tries := 0;
    lives := StrToInt(EditLives.Text);
  end
  // Sonst vorgegebene
  else
  begin
    if REasy.Checked = true then
    begin
      Randomize();
      number := Round(Random() * 1000);
      tries := 0;
      lives := 20;
    end
    else if RMiddle.Checked = true then
    begin
      Randomize();
      number := Round(Random() * 5000);
      tries := 0;
      lives := 15;
    end
    else if RHard.Checked = true then
    begin
      Randomize();
      number := Round(Random() * 10000);
      tries := 0;
      lives := 15;
    end;
  end;
  Button1.Enabled := true;
end;

end.

// Wars auch schon :)
Die Labels werden auf den Zeilen 83 & 84 geändert, doch passieren tut nichts.
Hoffe einer kann mir helfen ^^

MfG

PS: Man kann im Forum nur die Delphi-Versionen 5-XE2 auswählen.

PS2: Wieso ist meine kleine Anwendung fast 10mg gross? xD Im anhang wäre die Anwendung

PS3: Kann mir jemand einen Tipp geben wie man am besten ein Form designd? Wie man bei meiner Anwendung sehen kann, schaffe ich das iwie nicht die Controls so zu platzieren wie ich das gerne haben will, da immer diese "ich-muss-alles-so-doof-nebeneinander-setzen-aber-nie-neben-das-richtige-control" zeug mich nervt ^^
Angehängte Dateien
Dateityp: zip LearningByDoing.zip (2,51 MB, 4x aufgerufen)
Milos
  Mit Zitat antworten Zitat