Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Rahmen um Auswahl in Listbox entfernen (https://www.delphipraxis.net/101149-rahmen-um-auswahl-listbox-entfernen.html)

capo 9. Okt 2007 07:51


Rahmen um Auswahl in Listbox entfernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin
auch auf die Gefahr hin, dass ich jetzt aufgefordert werde die Forum-Suche zu nutzen, ich habe nichts gefunden.
Ich möchte den Rahmen der, entsteht wenn ich in einer Listbox etwas selektiere einfärben oder löschen.Momentan sieht es noch so aus. (s. Anhang)

Gruss vom capo

Blackheart 9. Okt 2007 08:03

Re: Rahmen um Auswahl in Listbox entfernen
 
Schon mal hiermit probiert [dp]Listbox färben[/dp]

capo 9. Okt 2007 08:18

Re: Rahmen um Auswahl in Listbox entfernen
 
Ja, habe alles ausgetestet, kein positives Ergebnis.
Selbst hiermit sehe ich immer noch einen kleinen gepunkteten Rahmen.
http://www.delphipraxis.net/internal...stbox+f%E4rben

Gruss vom capo

capo 10. Okt 2007 11:51

Re: Rahmen um Auswahl in Listbox entfernen
 
ich denk ich darf nun mal *push* ^^

Blackheart 10. Okt 2007 13:54

Re: Rahmen um Auswahl in Listbox entfernen
 
Zitat:

Zitat von capo
Ja, habe alles ausgetestet, kein positives Ergebnis.
Selbst hiermit sehe ich immer noch einen kleinen gepunkteten Rahmen.
http://www.delphipraxis.net/internal...stbox+f%E4rben

Gruss vom capo

Dort stand es doch
Delphi-Quellcode:
if odSelected in state then Canvas.DrawFocusRect(rect);

capo 10. Okt 2007 22:23

Re: Rahmen um Auswahl in Listbox entfernen
 
Hallo Blackheart...

hab ja auch nicht wirklich eine Ahnung. Danke

Habe versucht aber auch so funkt. es nicht.


Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
  begin

  with (Control as TListBox) do
  begin

    if Odd(Index) then
    begin

     if odSelected in State then begin
    //  if (odFocused in State) and (odSelected in State) then
        Canvas.Brush.Color := $00D4B569;  //Canvas-Hintergrundfarbe a
          Canvas.DrawFocusRect (Rect)
    end
      else

        Canvas.Font.Color := $00817161;
        end
    else
    begin

    if odSelected in State then begin
        Canvas.Brush.Color := $00D4B569;  //Canvas-Hintergrundfarbe
        Canvas.DrawFocusRect (Rect)
    end
      else
        Canvas.Brush.Color := clwhite;   //Canvas-Hintergrundfarbe
        Canvas.DrawFocusRect (Rect);
    end;

    Canvas.FillRect(Rect); //schön ausmalen
    Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Items[Index]);  //Text drüberpinseln

  end;

end;
gruss vom capo

Amateurprofi 10. Okt 2007 22:37

Re: Rahmen um Auswahl in Listbox entfernen
 
versuch es mal so, daß du das DrawFocusRect erst ganz am Schluß machst
also

Canvas.FillRect(Rect); //schön ausmalen
Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Items[Index]); //Text drüberpinseln
if .... then Canvas.DrawFocusRect(rect);

capo 11. Okt 2007 06:34

Re: Rahmen um Auswahl in Listbox entfernen
 
Klappt nun perfekt.
:-D
gruss vom capo

Amateurprofi 11. Okt 2007 10:16

Re: Rahmen um Auswahl in Listbox entfernen
 
@capo,

ich hab mir das (aus eigenem Interesse) noch mal angeschaut.
Wenn ich deinen Source-Code richtig interpretiere , dann möchtest du, daß der Hintergrund
- $D4B569 ist, wenn es sich um einen selektierten Eintrag handelt
- $817161 ist, wenn es sich um einen unselektierten Eintrag mit ungeradem Index handelt
- clWhite ist, wenn es sich um einen unselektierten Eintrag mit geradem Index handelt

Dann könnte man den Code so gestalten.

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
const
   bkclr:Array[boolean,boolean] of TColor=((clWhite,$817161),($D4B569,$D4B569));
begin
   with (Control as TListBox).Canvas, Rect do begin
      Brush.Color:=bkclr[odSelected in state, Odd(index)];
      TextRect(Rect,Left+2,Top+1,Items[index]);
      if odFocused in State then DrawFocusRect(Rect);
   end;
end;
DrawFocusRect muß dann aufgerufen werden wenn odFocused in State ist (nicht odSelected)

xZise 11. Okt 2007 11:05

Re: Rahmen um Auswahl in Listbox entfernen
 
Ansonsten ohne rahmen entweder:
Delphi-Quellcode:
Canvas.Pen.Color := Canvas.Brusch.Color
oder
Delphi-Quellcode:
Canvas.Pen.Style := psClear;
:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Seite 1 von 2  1 2      

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