AGB  ·  Datenschutz  ·  Impressum  







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

TLabel.Caption wird nicht geändert?

Ein Thema von milos · begonnen am 19. Jun 2013 · letzter Beitrag vom 19. Jun 2013
Antwort Antwort
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: TLabel.Caption wird nicht geändert?

  Alt 19. Jun 2013, 14:59
Ist integer neuerdings eine Klasse wie in .NET? Ansonsten müsste der Compiler bei dem ToString() doch eigentlich meckern. Naja, wie dem auch sei, versuch es mal mit
label3.Caption := IntToString(tries);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#3

AW: TLabel.Caption wird nicht geändert?

  Alt 19. Jun 2013, 15:04
Unter XE4 besitzen auch einfache Typen Helper-Methoden.
Siehe Docwiki.
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (19. Jun 2013 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

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

AW: TLabel.Caption wird nicht geändert?

  Alt 19. Jun 2013, 15:07
Ist integer neuerdings eine Klasse wie in .NET? Ansonsten müsste der Compiler bei dem ToString() doch eigentlich meckern. Naja, wie dem auch sei, versuch es mal mit
label3.Caption := IntToString(tries);
Hi und danke für die Antwort ^^
Irgendwie hatte ich in erinnerung, dass IntToStr in D3 nicht vorhanden war. Sicher bin ich mir jedoch nicht.
Ich habe einfach nach der Variable einen Punkt gesetzt und ToString() als vorschlag gesehen. Dachte wird so funktionieren ^^

Jedoch funktioniert IntToStr() auch nicht.

MfG

PS: Debugger meldet keine Fehler.
Milos

Geändert von milos (19. Jun 2013 um 15:10 Uhr) Grund: PS hinzugefügt
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TLabel.Caption wird nicht geändert?

  Alt 19. Jun 2013, 15:21
Ich habe deine EXE gerade mal bei mir gestartet. Mir fällt auf, dass wenn ich die [ALT]-Taste drücke dann die Zahlen sehen kann. Demnach hat es etwas mit der Aktualisierung bzw. dem Fensterhandling zu tun. Eine einfache Abhilfe wäre da ein Invalidate oder Refresh der Labels.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: TLabel.Caption wird nicht geändert?

  Alt 19. Jun 2013, 15:24
Es würde übrigens helfen, wenn du die Sourcen des Projekts anhängen würdest. Die Exe kann sich daraus dann ja jeder selbst erstellen. Das ist dann auch nicht so ein großer Upload.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

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

AW: TLabel.Caption wird nicht geändert?

  Alt 19. Jun 2013, 15:42
Ich habe deine EXE gerade mal bei mir gestartet. Mir fällt auf, dass wenn ich die [ALT]-Taste drücke dann die Zahlen sehen kann. Demnach hat es etwas mit der Aktualisierung bzw. dem Fensterhandling zu tun. Eine einfache Abhilfe wäre da ein Invalidate oder Refresh der Labels.
Danke, das hat mich auf die Lösung gebracht.
Habe zuerst Invalidate und Refresh ausprobiert. Beides hat nicht geklappt. [ALT] funktionierte jedoch.
Der Fehler war, dass ich die Labels zuerst gestzt habe und sie dann auf das Panel gezogen habe und die Labels "nicht drauf" waren. - Wieso auch immer - Ist dies normal oder habe ich nur was komplett falsches gemacht?
Wenn ich den Panel jedoch wegschiebe, klappts wunderbar. Wirklich blöder Fehler den ich gemacht habe >.<


Es würde übrigens helfen, wenn du die Sourcen des Projekts anhängen würdest. Die Exe kann sich daraus dann ja jeder selbst erstellen. Das ist dann auch nicht so ein großer Upload.
Danke, werde ich beim nächsten Mal berücksichtigen

Nochmal jedem ein dankeschön, dass ihr euch zeit genommen habt
Milos
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 23:25 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