Einzelnen Beitrag anzeigen

torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Mal wieder farbige Listbox, aber was spezielles

  Alt 6. Okt 2006, 10:13
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?
Danke
Tom
  Mit Zitat antworten Zitat