AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Mal wieder farbige Listbox, aber was spezielles

Mal wieder farbige Listbox, aber was spezielles

Offene Frage von "torud"
Ein Thema von torud · begonnen am 6. Okt 2006 · letzter Beitrag vom 6. Okt 2006
Antwort Antwort
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
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Mal wieder farbige Listbox, aber was spezielles

  Alt 6. Okt 2006, 10:22
Hallo Tom,

die Routine heißt Drawitem, nicht DrawListBox.

Gruß Hawkeye
  Mit Zitat antworten Zitat
torud

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

Re: Mal wieder farbige Listbox, aber was spezielles

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

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Mal wieder farbige Listbox, aber was spezielles

  Alt 6. Okt 2006, 10:37
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
  Mit Zitat antworten Zitat
torud

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

Re: Mal wieder farbige Listbox, aber was spezielles

  Alt 6. Okt 2006, 10:53
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?
Miniaturansicht angehängter Grafiken
liste_214.gif  
Danke
Tom
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Mal wieder farbige Listbox, aber was spezielles

  Alt 6. Okt 2006, 12:20
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
  Mit Zitat antworten Zitat
torud

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

Re: Mal wieder farbige Listbox, aber was spezielles

  Alt 6. Okt 2006, 12:52
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:

Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]); Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]); gemacht habe.
Danke
Tom
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:53 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