![]() |
Delphi-Version: XE2
TLabel.Caption wird nicht geändert?
Liste der Anhänge anzeigen (Anzahl: 1)
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 :D 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:
Die Labels werden auf den Zeilen 83 & 84 geändert, doch passieren tut nichts.
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 :) 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 ^^ |
AW: TLabel.Caption wird nicht geändert?
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
Delphi-Quellcode:
label3.Caption := IntToString(tries);
|
AW: TLabel.Caption wird nicht geändert?
|
AW: TLabel.Caption wird nicht geändert?
Zitat:
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. |
AW: TLabel.Caption wird nicht geändert?
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.
|
AW: TLabel.Caption wird nicht geändert?
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.
|
AW: TLabel.Caption wird nicht geändert?
Zitat:
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 >.< Zitat:
Nochmal jedem ein dankeschön, dass ihr euch zeit genommen habt :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 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