Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi von Enabled := False zu Enabled := True geht nicht (https://www.delphipraxis.net/163694-von-enabled-%3D-false-zu-enabled-%3D-true-geht-nicht.html)

ck.bielefeld 11. Okt 2011 19:39

von Enabled := False zu Enabled := True geht nicht
 
Hallo Zusammen!
Bevor gemeckert wird:
- Ich bin mir nicht sicher, ob ich in dieser Sparte mit meiner Frage richtig bin. Sollte ich hier falsch sein, bitte ich um Verzeihung und um das Verschieben des Beitrags zur passenden Sparte mittels eines Admins.
- Ja, habe die Suche benutzt, und ja, ich habe Threads gefunden, die ein ähnliches Problem behandeln. Aber nein, die konnten mir leider nicht weiterhelfen.

Nun zu meinem Problem:

Ich besuche eine Vorlesung zur Maschinenbauinformatik, und unsere Aufgabe ist (eigentlich) ganz einfach.
Es sollen zwei Zufallszahlen mittels der vier Grundrechenarten verarbeitet werden.
Man klickt auf ein Button. Dieser Button legt zwei Zufallszahlen in den jeweiligen Variablen ab. Dann klickt man auf einen von vier weiteren Buttons, hinter denen dann die vier Grundrechenarten liegen.
Soweit ganz simpel. Klickt man auf den Zufalls-Button, erscheinen die beiden Zahlen. Klickt man dann auf einen der vier anderen Buttons, wird ordnungsgemäß gerechnet.
Dumm nur, das man auf die vier Buttons zum rechnen klicken kann, wenn noch keine Zufallszahlen generiert wurden. Folglich kann ich +, - oder * rechnen. Bei der Division allerdings gibts Probleme.
Also sollten wir die vier Buttons deaktivieren.

Aus meiner Erfahrung mir Visual Basic kenn ich das Procedere:
Ich habe die vier Buttons von Anfang an auf Enabled := False gestellt.
Nun möchte ich in der Prozedur Klick, die auch die Zufallszahlen erzeugt, die vier Buttons auf Enabled := True setzen. Sprich mit: Button1.Enabled := True
Dies sollte dann so aussehen, das die vier Rechenbuttons inaktiv sind, solange noch keine Zufallszahlen zum Rechnen generiert wurden. Mit dem generieren werden diese Buttons dann wieder aktiv gesetzt. Soweit die Theorie.

Die Praxis sieht allerdings ernüchternd aus: das funktioniert so nicht. Die Buttons bleiben inaktiv.

Woran liegt das?

Vielen Dank für eure Hilfe, und viele Grüße,

ck.bielefeld

mkinzler 11. Okt 2011 19:42

AW: von Enabled := False zu Enabled := True geht nicht
 
Veranlasst du anschliessend die Form sich neu zu Zeichnen?
Wo steht der Code?

scrat1979 11. Okt 2011 19:47

AW: von Enabled := False zu Enabled := True geht nicht
 
Zitat:

Zitat von mkinzler (Beitrag 1129887)
Veranlasst du anschliessend die Form sich neu zu Zeichnen?
[...]

Warum sollte man die Form neu zeichnen müssen, um das Ergebnis zu sehen?? :shock: Ein einfaches
Delphi-Quellcode:
button1.enabled := true / false;
sollte doch das Ergebnis sofort zeigen, oder?

Stevie 11. Okt 2011 19:47

AW: von Enabled := False zu Enabled := True geht nicht
 
Haltepunkt an die Stelle, wo du das Enabled auf True setzt, und schauen, ob der Code ausgeführt wird.

P.S. Da muss kein Neuzeichnen angetriggert werden

P.P.S. Bissle Sourcecode zu posten kann nie schaden, um den Fehler zu lokalisieren.

ck.bielefeld 11. Okt 2011 19:48

AW: von Enabled := False zu Enabled := True geht nicht
 
Ich habe meinen Fehler gefunden!
Oh man, wie blind.

@mkinzler
Die Vermutung, das der Code an der falschen Stelle stand war ziemlich gut!

Der Code zu (re-)aktiviern der Buttons mit der Rechenoperationen lag nicht unter dem Button zu generieren der Zufallszahlen, sonder hinter dem Additions-Button.
Folglich konnte ich meine inaktiven Buttons nur dann reaktivieren, wenn ich vorher auf einen (dummerweise inaktiven) Button geklickt hätte.

Den Code an die richtie Stelle verschoben - Problem gelöst!

Vielen dank an mkinzler!

Viele Grüße,

ck.bielefeld


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 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