Also ich habe folgendes Problem:
Ich möchte mit Hilfe des Timers erreichen, dass jede halbe Sekunde die Farbe des Formulars und die Schriftfarbe von 2 Buttons zwischen rot und schwarz wechselt.
Dabei gibt es jedoch ein seltsames Problem, was mich ziemlich verwirrt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm2.Timer1Timer(Sender: TObject); begin if Form2.Color:=clBlack then begin Form2.Color:=clRed; BitBtn1.Font.Color:=clBlack; BitBtn2.Font.Color:=clBlack; end else begin Form2.Color:=clBlack; BitBtn1.Font.Color:=clRed; BitBtn2.Font.Color:=clRed; end; end; |
Wie ihr seht, steht in der 3. Zeile ein Farbwert für die Farbe des Formulars als Bedingung. Wenn ich das Programm starten will, kommt allerdings die Fehlermeldung "Ausdruckstyp muss BOOLEAN sein". Für die nachfolgenden Form2.Color's werden keine Fehlermeldungen anzeigt.
Und ich hab noch nie gehört, dass eine simple if-then-Verzweigung unbedingt einen BOOLEAN-Wert in der Bedingung benötigt. Bei anderen Programmen verwende ich z.B. Zahlenwerte (z.B. if x<4 then), und da ist noch nie eine Fehlermeldung gekommen.
Noch seltsamer wird es mit folgendem Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm2.Timer1Timer(Sender: TObject); begin if Form2.Color:=true then begin Form2.Color:=clRed; BitBtn1.Font.Color:=clBlack; BitBtn2.Font.Color:=clBlack; end else begin Form2.Color:=clBlack; BitBtn1.Font.Color:=clRed; BitBtn2.Font.Color:=clRed; end; end; |
Wenn ich dann also in der 3. Zeile, wie Delphi es verlangt, einen BOOLEAN-Wert einsetze (was ja eigentlich völlig sinnlos ist), dann kommt die Fehlermeldung "Inkompatible Typen: 'TColor' und 'Boolean'"
D.h., erst sagt Delphi es muss BOOLEAN sein, und dann beschwert es sich, dass es BOOLEAN ist.
Oder kann ich etwa die Farbe des Formulars nicht als Bedingung nehmen???
Ich hoffe dass ihr mir helfen könnt!