Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mi 31.08.05 20:17 
Hi, wie kann ich z.B. in der ListBox die Farbe Selektiert ändern?

Ich dachte im OnDrawItem aber gibt es einen anderen Weg? Mir gefällt nicht das Grau!
Wie z.B. sehe die OnDrawItem bei TreeView aus ist das im Prinzip dasselbe wie
OnDrawItem bei ListBox?

Moderiert von user profile iconChristian S.: Titel geändert (komplette Großschreibung = Schreien => böse)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 31.08.05 21:24 
Titel: Re: FARBE "SELECTIERT" ändern?
Hallo,
user profile iconJRegier hat folgendes geschrieben:
...Ich dachte im OnDrawItem aber gibt es einen anderen Weg?
... ist das im Prinzip dasselbe wie OnDrawItem bei ListBox?

einen anderen Weg, vermutlich ja, aber warum nicht OnDrawItem?
Das Prinzip ist dasselbe, in OnDrawItem auf odSelected bzw. odFocused reagieren und dann deine Wunschfarbe setzen.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 01.09.05 05:28 
Titel: Re: FARBE "SELECTIERT" ändern?
user profile iconLannes hat folgendes geschrieben:
Hallo,
user profile iconJRegier hat folgendes geschrieben:
...Ich dachte im OnDrawItem aber gibt es einen anderen Weg?
... ist das im Prinzip dasselbe wie OnDrawItem bei ListBox?

einen anderen Weg, vermutlich ja,


z.B. den OriginalCode zu ändern?
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 01.09.05 11:13 
Hallo!

Ist die Anwendung nur für dich persönlich oder willst du diese auch mal eine Bekannt, Freud oder sogar ins Internet stellen?

Wenn die Anwendung nicht nur du benutzt dann würde ich die Standardfarben benutzen. Denn mich würde es stören wenn dein Programm meine Windows-Einstellungen ignorieren würde. ;-)

Lg Martin
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 02.09.05 07:07 
user profile iconMartin1966 hat folgendes geschrieben:
Hallo!

Ist die Anwendung nur für dich persönlich oder willst du diese auch mal eine Bekannt, Freud oder sogar ins Internet stellen?

Wenn die Anwendung nicht nur du benutzt dann würde ich die Standardfarben benutzen. Denn mich würde es stören wenn dein Programm meine Windows-Einstellungen ignorieren würde. ;-)

Lg Martin


Na ja soll ich denn einem Programm komplett System Farben setzen? Ich denke wenn ich meinem Programm eine persönliche Note gebe
mit ausgesuchten Farben und es sieht gut aus warum sollte ich das nicht tun?
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 02.09.05 13:18 
Hallo,
user profile iconJRegier hat folgendes geschrieben:

mit ausgesuchten Farben und es sieht gut aus warum sollte ich das nicht tun?

z.B. Meine Einstellung für die Fensterfarbe entspricht der Farbe die Du für Selektiert in der Listbox gewählt hast, dann ist die Selektierung nicht mehr so deutlich.
Ist so ähnlich wie weißer Adler auf weißem Grund. :wink:
Wenn Du anderen Farben anbieten möchtest, dann immer optional über eine Einstellmöglichkeit.
Ein Programm mit ungewohnten Farben hinterläßt bei mir zuerstmal einen negativen ersten Eindruck.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
pascalsv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
BeitragVerfasst: Di 10.10.06 19:47 
Hallo,

mich interessiert diese Thematik auch. Mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  myListBox := (Control as TRzListBox);
  sText := myLIstbox.items.strings[index];
  if myListBox.Items.Strings[Index] <> '' then begin
    with (Control as TRzListBox).Canvas do
    begin
      if Index = 2 then Brush.Color:=clMaroon
      else Brush.Color := clGray;
      FillRect(Rect);
      TextOut(Rect.Left,Rect.Top,sText);
    end;
  end;

färbe ich alles grau und die 3. Zeile bordeauxrot. Aber eigentlich hätte ich gerne Folgendes:
- Alle Einträge: bordeauxrote (clMaroon) Zeichen auf weissem Hintergrund
- selektierter Eintrag: weisse Zeichen auf bordeauxrotem Hintergrund.

Wie bekomme ich das hin??

Danke,

Pascal
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 10.10.06 20:15 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  with TListBox(Control).Canvas do begin
    if odSelected in State then
    begin
      Font.Color := clWhite;
      Brush.Color := clMaroon;
    end
    else
    begin
      Font.Color := clMaroon;
      Brush.Color := clWhite;
    end;
    FillRect(Rect);
    TextOut(Rect.Left, Rect.Top, TListBox(Control).Items[Index]);
  end;
Nur noch das Focusrect stört! :(

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
pascalsv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
BeitragVerfasst: Fr 13.10.06 09:02 
wulfskin, dass sieht schon deutlich besser aus!!! Gibt es denn keine Möglichkeit, die Farbe des Fokusrechteckes zu verändern? Vielleicht mit einer anderen Komponenten?

Danke!
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mo 16.10.06 15:52 
Hallo,
user profile iconpascalsv hat folgendes geschrieben:
Gibt es denn keine Möglichkeit, die Farbe des Fokusrechteckes zu verändern?
so eine Möglichkeit kenne ich nicht, aber man kann das Fokusrechteck mit DrawFocusRect übermalen. DrawFocusRect arbeitet mit einer XOR-Funktion, daher verschwindet der Focusrahmen nach erneutem Aufruf.

Bau mal in den Code von user profile iconwulfskin nach FillRect folgende Zeilen ein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  //mit +2 sieht es besser aus
  TextOut(Rect.Left+2, Rect.Top+2, TListBox(Control).Items[Index]); 
  if odSelected in State then  
    begin  
    DrawFocusRect(Rect);
    if not (odFocused in State) then  
      DrawFocusRect(Rect);
    end;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
pascalsv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
BeitragVerfasst: Mo 16.10.06 16:40 
Lannes, Dein "workaround" funktioniert super!! :zustimm:

Vielen Dank!

Pascal