Hallo!
Ich gebe in meinem Programm dem User die Möglichkeit, die Hintergrundfarbe und damit die Farbe aller sichtbaren Objekte zu verändern.
Ich habe dazu eine ausgelagerte Prozedur, da ich diesen Aufruf mehrfach brauche und so nicht alles mehrfach schreiben muss sondern immer die Prozedur ansteuern muss.
Sie sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.Farbwechsel(Sender: TObject; const Farbe: TColor); begin Form1.Color:=Farbe; Panel3.Color:=Farbe; Label6.Color:=Farbe; Label8.Color:=Farbe; Label5.Color:=Farbe; Label9.Color:=Farbe; Panel4.Color:=Farbe; Kartenpool.Color:=Farbe; Mainbox.Color:=Farbe; Sidebox.Color:=Farbe; Fusionbox.Color:=Farbe; Nachnamenlabel.Color:=Farbe; Vornamenlabel.Color:=Farbe; UDELabel.Color:=Farbe; Eventlabel.Color:=Farbe; Panel2.Color:=Farbe; Starthandbox.Color:=Farbe; StringGrid1.Color:=Farbe; Form1.Repaint; MainBox.Repaint; end; |
Die Veränderung der Farbe funktioniert bei allen Komponenten, außer bei Mainbox. Ein Repaint der Form und / oder der Mainbox (wie am Ende des Codes probiert) schafft keine Abhilfe. Die Mainbox bleibt in dem grau, in dem sie programmiert wurde.
Wenn ich allerdings die Mainbox kurz unsichtbar und dann wieder sichtbar mache, dann nimmt sie die Farbe an.
Woran liegt das, dass alle Komponenten angesteuert werden und sich aktualisieren, die Mainbox jedoch nicht?
MfG
Terra