Delphi-PRAXiS

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 Mal wieder farbige Listbox, aber was spezielles (https://www.delphipraxis.net/78518-mal-wieder-farbige-listbox-aber-spezielles.html)

torud 6. Okt 2006 09:13


Mal wieder farbige Listbox, aber was spezielles
 
Also ich hoffe, das hier wenigstens ein paar von Euch reinschauen, da ich die Routine zum Selbstzeichnen schon gefunden und eingebaut habe. Aber leider funzt es nicht so recht.

Delphi-Quellcode:
procedure TForm1.list_clients_clDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  i:integer;
begin
  with (control as TListBox) do
  begin
    for i:= 0 to Count-1 do
      begin
        if ClientList.IndexOf(Items[i]) > -1 then
          begin
            //ShowMessage(items[i]+' found');
            Canvas.Brush.Color := clLime;
            Canvas.Pen.Color := clWhite;
            Canvas.Rectangle(Rect);
            Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]); // Item wird immer gezeichnet
          end
        else
          begin
            //ShowMessage(items[i]+' not found');
            Canvas.Brush.Color := clRed;
            Canvas.Pen.Color := clWhite;
            Canvas.Rectangle(Rect);
            Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]); // Item wird immer gezeichnet
          end
      end;
  end;
end;
Ok, ich habe in der globalen Stringliste Clientlist alle angemeldeten Clients drin stehen, welche mir auch bei aktivierter Showmessage als gefunden oder nicht gefunden angezeigt werden. Aber leider funktioniert das Einfärben überhaupt nicht. Es ist immer alles rot. Wenn ich die Showmessage aktiviert habe, sehe ich zwar, dass er ab und zu zwischen durch was grün zeichnet, aber leider haut das nicht hin.

Es soll also so sein, dass in der Liste immer alle Clients stehen, die aus einer Datei ausgelesen werden, aber nur die grün eingefärbt sein sollen, die sich in der ClientList befinden, damit man eine optische Kontrolle hat, welche Rechner Online sind und welche nicht.

Wo liegt hier der Fehler?

Hawkeye219 6. Okt 2006 09:22

Re: Mal wieder farbige Listbox, aber was spezielles
 
Hallo Tom,

die Routine heißt Drawitem, nicht DrawListBox.

Gruß Hawkeye

torud 6. Okt 2006 09:33

Re: Mal wieder farbige Listbox, aber was spezielles
 
Sorry, damit kann ich leider nix anfangen. Ich benutze doch das richtige Event. Sicher meinst Du, dass ich versuche dieses Event zu missbrauchen...Oder!?

Ok, dann frage ich eben, wie ich es ansonsten lösen könnte...???

Hawkeye219 6. Okt 2006 09:37

Re: Mal wieder farbige Listbox, aber was spezielles
 
Du solltest in der Behandlungsroutine für den Event nur ein Element der Listbox zeichnen. Der Index des Elements wird dir im Parameter Index übergeben.

Gruß Hawkeye

torud 6. Okt 2006 09:53

Re: Mal wieder farbige Listbox, aber was spezielles
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hm, das war leichter als gedacht. Was mir nun noch nicht gefällt ist, dass zwischen den einzelnen Items da wo Text ist, kein leerer Zwischenraum ist und da wo kein Text mehr steht, ein weißer Zwischenraum ist. Wenn ich das mal bildlich zeigen soll, würde ich das tun. Wie schaffe ich da noch Abhilfe?

marabu 6. Okt 2006 11:20

Re: Mal wieder farbige Listbox, aber was spezielles
 
Hallo Tom,

könnte es nicht sein, dass du den weißen Rand um deine farbige Ausgabe selbst produzierst? Nimm doch statt Rectangle() mal FillRect().

Grüße vom marabu

torud 6. Okt 2006 11:52

Re: Mal wieder farbige Listbox, aber was spezielles
 
Danke, genau das war´s! Ich hatte dann zwar noch Abweichungen, wenn ein Item den Focus hatte, aber das habe ich eliminiert, indem ich aus:

Delphi-Quellcode:
Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]);
Delphi-Quellcode:
Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]);
gemacht habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz