Autor Beitrag
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 05.07.07 11:05 
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:

ausblenden 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

_________________
Hasta La Victoria Siempre
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 05.07.07 11:36 
Erstmal: Warum hat Farbwechsel den Parameter Sender? Hast du sie einem Event zugeteilt?
Mainbox ist eine TListBox, richtig? Bei mir funktioniert das normale Farbwechseln per ListBox1.Color := Farbe; sehr gut. (ohne Repaint oder ähnlichen schnickschnack ;) ) Kann auch keinen speziellen Fehler an der Prozedur sehen, tut mir leid... :| Ich könnte mir vielleicht vorstellen, dass in der Delphi 6 VCL ein Bug ist, der in der D7 nicht mehr ist, aber ich glaub's eigentlich nicht...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 05.07.07 12:27 
Moin!

Ist die ListBox vielleicht selbstgezeichnet? (OwnerDraw) :gruebel:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 05.07.07 17:40 
Hi!

Nein, selbstgezeichnet ist die nicht. Was den Parameter "Sender" angeht, steht der drin, weil ich mich nicht die tiefergehenden Kenntnisse habe und einfach dachte, der Zusatz "Sender: TObject" muss immer dastehen.

Wie gesagt, bei allen Komponenten geht das; nur diese eine Box macht Probleme.

Terra

_________________
Hasta La Victoria Siempre
JensLaskowski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

Win XP
BDS 2006 Architect
BeitragVerfasst: Do 05.07.07 17:46 
Ich kann leider auch nicht genau sagen woran es liegen kann aber probier mal

ausblenden Delphi-Quelltext
1:
ListBox1.Style := lbOwnerDrawFixed;					


bevor du die Listbox farbe änderst.

Mit freundlichen Grüßen
JensLaskowski

_________________
Nichtstun macht nur dann Spaß, wenn man eigentlich viel zu tun hätte.
Terra23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 05.07.07 21:10 
Hi!

Wenn ich das tue, dann verändert sich die Farbe zwar, allerdings nur bis zum Bereich in dem Einträge stehen. Nach dem letzten Eintrag bleibt das Ding trotzdem grau.

Wenn ich das wieder auf den Standard stelle, dann ändert sich nur die Hintergrundfarbe hinter den Einträgen und der Rest bleibt grau.

Ich werde einfach mal die Box kurz unsichtbar und dann wieder sichtbar machen. Ist zwar eine unschöne Lösung aber solange ich nicht weiß, warum diese Komponente nicht reagiert, kann ich es nicht ändern.

Terra

_________________
Hasta La Victoria Siempre
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 05.07.07 21:48 
Moin!

Schonmal .Invalidate; probiert? :?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.