AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Schriftfarbe einer Zeile in der Listbox ändern?
Thema durchsuchen
Ansicht
Themen-Optionen

Schriftfarbe einer Zeile in der Listbox ändern?

Ein Thema von Chris1986 · begonnen am 21. Sep 2003 · letzter Beitrag vom 22. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2      
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#1

Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 16:09
Hallo DPler.
Ich habe ein kleines Programm geschrieben, das andere PC's anpingt und dann in einer Listbox auflistet, welche "online" sind.
Was muss ich den tun, damit die Rechern die "online" sind grün aufgelistet werden und die anderen rot?
Denn wenn ich einfach Listbox1.font.color verändere, wirkt sich das auf die gesamte Listbox auf.

Ausserdem habe ich noch das Problem, dass die Listbox nicht weiter nach unten scrollt, wenn es mehrere Einträge werden, als sichtbar in die Liste passen.

Gruß
Christian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 16:25
Moin Chris,

dazu muss die Eigenschaft Style der ListBox auf lbOwnerDrawFixed gesetzt werden.

So könnte man dann die Einträge immer im Wechsel rot und grün schreiben.

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

  if (Index mod 2 = 0) then begin
    ListBox1.Canvas.Font.Color := clred;
  end else begin
    ListBox1.Canvas.Font.Color := clGreen;
  end;
  ListBox1.Canvas.TextOut(Rect.Left,Rect.Top,ListBox1.Items[Index]);
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 17:21
Danke,
das funktioniert, aber was schreibe ich denn in die Bedingung, damit es nur grün wird, wenn eine Variable "status" vom Typ String = "online" ist?

Gruß
Christian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 18:15
Moin Chris,

Delphi-Quellcode:
  if status = 'onlinethen begin
    ListBox1.Canvas.Font.Color := clGreen;
  end else begin
    ListBox1.Canvas.Font.Color := clRed;
  end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 18:25
Hi Christian.
Das habe ich auch gedacht. Aber wenn ich das so mache, ändert sích die Schriftfarbe aller Items. Ich versteh das nicht

Gruß
Christian
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 19:01
Hi,
setzt du "online" für jedes zeichnen (zeichen <> hinzufügen) neu?

Chris
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 19:15
Zitat von Chakotay1308:
Hi,
setzt du "online" für jedes zeichnen (zeichen <> hinzufügen) neu?

Chris
Wie meinst du das jetzt?
Ich prüfe, wieviel Bytes ich zurückbekomme. Wenn die Bytes=0 sind, setze ich Status auf "offline" oder sonst eben auf "online".

Dann trage ich das so in die Listbox ein :
listbox1.items.add('...'+status); Mir ist auch aufgefallen, dass das ändern der Farbe funktioniert, aber nur, wenn man nicht scrollt. Hat jemand eine Ahnung wodran das liegt?
Gruß
Christian
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 19:21
Hi,
ich sehe das Problem. Du machst das derzeit so:
Delphi-Quellcode:
if (iReturnedBytes > 0) then
  online := true;
ListBox1.Items.Add('192.168.0.1'); // oder irgendeine andere IP
Das machst du in deiner Routine, in der du auch pingst.

Das Problem ist aber nun, dass das Zeichnen nicht automatisch mit dem Hinzufügen passiert. Du musst also folgendermaßen arbeiten:
Füge alle Rechner in die ListBox und mache das dann folgendermaßen im OnDrawItem:
Delphi-Quellcode:
iReturnedBytes := PingeDenRechnerAnMitIP(ListBox1.Items[Index]);
if (iReturnedBytes > 0) then
  online := true;

if online then begin
  ListBox1.Canvas.Font.Color := clGreen;
end else begin
  ListBox1.Canvas.Font.Color := clRed;
end;
Chris
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 19:26
Ich versteh das nicht ganz
Zitat:
iReturnedBytes := PingeDenRechnerAnMitIP(ListBox1.Items[Index]);
Heißt das, dass ich erst im onDrawItem pingen kann?

Gruß
Christian
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Schriftfarbe einer Zeile in der Listbox ändern?

  Alt 21. Sep 2003, 19:42
Hi,
kannst oder solltest. Das kannst du dir jetzt aussuchen.

Chris
  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 21:45 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