AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox Select Farbe

Ein Thema von Pseudemys Nelsoni · begonnen am 4. Mär 2003 · letzter Beitrag vom 8. Mai 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Listbox Select Farbe

  Alt 4. Mär 2003, 10:37
moin,

wie ihr ja sicher wisst hat die Listbox wenn ein eintrag markiert ist eine blaue "Markierfarbe"(so ein dunkelblau) kann man die ändern? Sie passt nicht zu meinem programm

danke

gruss mario
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 4. Mär 2003, 10:42
Selber zeichen und für einen markierten Eintrag die gewünschte Frabe wählen. Ereignis: OnDrawItem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#3
  Alt 4. Mär 2003, 10:46
Da schließ ich mich gleich mit einer Frage an:

Wie kann ich diesen gestricheltem Rahmen um die Auswahl wegmachen.

Aussehen solte das dann so wie bei Winamp 2 in der Playlist.
Die Wichtigkeit eines Postings im Forum ist reziprok zur Anzahl der enthaltenenen, kumulierten Ausrufungszeichen!!!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4
  Alt 4. Mär 2003, 11:28
jo, nur leider weiss ich nichtmal wie das zeichnen geht

@janjan: genau das ist das was ich suche ^^
Mario
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5
  Alt 4. Mär 2003, 11:29
Das müsste auch im "OnDrawXXX" gehen, indem du "DrawFocusRect" (API-Funktion) aufrufst. Dadurch wird das bereits vorhandene entfernt (XOR).

Angabe allerdings ohne Gewähr, weil ich mir für den Zweck eine Komponente geschrieben habe, in der man das mit einer zusätzlichen Eigenschaft im Objektinspektor ein- und ausschalten kann. Und da geht´s dann in der "CNDrawItem"-Methode.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#6
  Alt 4. Mär 2003, 13:42
Zitat von janjan:
Aussehen solte das dann so wie bei Winamp 2 in der Playlist.
Ich habe sowas mal mit der Playlist von WinAmp3 gemacht. War ein bisschen Arbeit aber sah dann am Ende ganz nett aus. Habe mal nen Screenshot angehängt. Also wenn du genauere Fragen hast, kannst du mir ja mal ne PM schreiben.

Gruß Yheeky
Miniaturansicht angehängter Grafiken
screen.gif  
  Mit Zitat antworten Zitat
Benutzerbild von City Light
City Light

Registriert seit: 17. Sep 2002
314 Beiträge
 
#7
  Alt 4. Mär 2003, 16:15
Ist es das was du suchst?
Delphi-Quellcode:
//markierter Eintrag in ListBox in eigener Farbe

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
                                  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListbox) do
  begin
    if odSelected in State then
    Canvas.Brush.Color := $00C08000;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left+5, Rect.Top, Items[Index]);
  end;
end;
Gruß Tino
Bis bald man liest sich
Tino
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#8
  Alt 4. Mär 2003, 16:44
Wenn man den Tip von City Light und MathiasSimmack kombiniert hat man zu 90% das was ich suche:

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListbox) do
  begin
    if odSelected in State then
      Canvas.Brush.Color := $00C08000;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left+5, Rect.Top, Items[Index]);
    if odSelected in State then
      DrawFocusRect(canvas.Handle,rect);
  end;
end;
Ganz perfekt ist es immer noch nicht, da nach dem Start solange dieses dumme Auswahlrechteck angezeigt wird bis man einen eintrag anwählt.

Hat da einer ne Idee zu?
Die Wichtigkeit eines Postings im Forum ist reziprok zur Anzahl der enthaltenenen, kumulierten Ausrufungszeichen!!!
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#9
  Alt 4. Mär 2003, 17:09
*selbermeld*

So klappt es:

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListbox) do
  begin
    if odSelected in State then
    Canvas.Brush.Color := $00C08000;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left+5, Rect.Top, Items[Index]);
    if (odFocused in state) then
    DrawFocusRect(canvas.Handle,rect);
  end;
end;
und hier noch eine nicht ganz perfekte Winamp-2-Standard-Skin-Imitation:


Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListbox) do
  begin
    Canvas.Brush.Color := clBlack;
    if odSelected in State then
      Canvas.Brush.Color := clBlue;;
    Canvas.FillRect(Rect);
    Canvas.Font.Color:=clLime;
    Canvas.TextOut(Rect.Left+5, Rect.Top, Items[Index]);
    if (odFocused in state) then
      DrawFocusRect(canvas.Handle,rect);
  end; // with
end; // procedure
Die Wichtigkeit eines Postings im Forum ist reziprok zur Anzahl der enthaltenenen, kumulierten Ausrufungszeichen!!!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#10
  Alt 4. Mär 2003, 22:19
hey das ist super, danke an alle...mal ne frage, woher kennt man denn begriffe wie "odSelect" ? ich meine man kann sie ja nicht selbst herausfinden....stehen die irgendwo?

gruss mario ^^
Mario
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 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