AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bestimmte Zeilen einer TListbox färben

Ein Thema von Aike · begonnen am 10. Mai 2006 · letzter Beitrag vom 14. Jun 2007
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 13:21
Ich würde mal in Betracht ziehen, die Objects-Methode zu benutzen. Die ist etwas versteckt (in den Items).

Listbox1.Items.AddObject() -> F1

Da kann man schlicht etwas hinterlegen. In diesem Fall :

Delphi-Quellcode:
Record
  Anzeige : boolean;
end;
Gruß
Hansa
  Mit Zitat antworten Zitat
obscureSg

Registriert seit: 14. Jun 2007
7 Beiträge
 
#12

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 21:25
geht nicht!!! hier nochma ein code :



Delphi-Quellcode:
implementation

{$R *.DFM}


procedure ZeileFaerben(Zeile:integer;Farbe:integer;Listbox1:TListbox;
  Index:Integer;Rect:TRect);
begin
  if Index<>Zeile then
    Farbe:=clBlack;

  Listbox1.Canvas.Brush.Color:=clWhite;
  Listbox1.Canvas.Pen.Color:=Farbe;
  Listbox1.Canvas.FillRect(Rect);
  Listbox1.Canvas.Font.Color:=Farbe;
  Listbox1.Canvas.TextOut(Rect.Left,Rect.Top,Listbox1.Items[Index]);
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  if Control is TListbox then
  begin
    TListbox(Control).Canvas.FillRect(Rect);
    if TListbox(Control).Items.Strings[Index] = 'verliehenthen
      TListbox(Control).Canvas.Font.Color := clRed
    else
    if odSelected in State then
      TListbox(Control).Canvas.Font.Color := graphics.clHighlightText
    else
      TListbox(Control).Canvas.Font.Color := graphics.clBtnText;

    TListbox(Control).Canvas.TextOut(Rect.Left, Rect.Top, TListbox(Control).Items[Index]);
  end;
end;

end.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 21:29
Delphi-Quellcode:
TListbox(Control).Canvas.FillRect(Rect);
    if TListbox(Control).Items.Strings[Index] = 'verliehenthen
      TListbox(Control).Canvas.Font.Color := clRed
Besteht der Eintrag in der Listbox auch nur aus "verliehen" oder
ist "verliehen" nur eine Bestandteil des Eintrages?


Und nocht etwas "geht nicht" ist eine nicht sehr hilfreiche Fehlerbeschreibung.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
obscureSg

Registriert seit: 14. Jun 2007
7 Beiträge
 
#14

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 21:44
Es geht um eine "Verliehen" funktion für meine Filmdatenbank.da ist dann halt sag ich mal der Film : Oceans 11 Status: Verliehen.
In der Zeil eist halt das Wort verliehen drin. Wenn das in der Ganzen Listbox der Fall ist, soll jeweils die Zeile mit dem wort"verliehen" rote schreift erhalten. hört sich ja simpel an, isses nur leider nicht =(
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 21:47
kurze Nebenfrage : gelingt es Dir, überhaupt eine Zeile der Listbox zu färben ? Die paar Zeilen könnten nämlich von mir sein, oder von Luckie. Der hatte mir mal bei sowas geholfen.

wg. roter Kasten : doch, ist einfach.
Gruß
Hansa
  Mit Zitat antworten Zitat
obscureSg

Registriert seit: 14. Jun 2007
7 Beiträge
 
#16

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 21:50
ich shcaffe es lediglich die schriftfarbe für alle zeilen der listbox zu färben. so ein "roter kasten" wäre auch eine hilfreiche sache.das klingt in meinen ohren aber noch schwerer =(
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 21:51
Wenn das Wort mit anderen Wörtern in der Zeile steht kannst Du es nicht
so if TListbox(Control).Items.Strings[Index] = 'verliehenthen abfragen.

Dann solltest Du mit pos(substring,String) anfangen.
z.B. so:

Delphi-Quellcode:
if pos('verliehen',TListbox(Control).Items.Strings[Index]) > 0 then
  // Zeile färben
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
obscureSg

Registriert seit: 14. Jun 2007
7 Beiträge
 
#18

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 21:55
hab ich jetzt auch probiert, geht aber auch nicht! der färbt die zeilen einfach garnicht!ich hatte es mal mit einer forschleife probiert sodass er bei der listbox1 von zeile 0 bis litbox1.items.count (letzten eintrag der listbox) nach dem wort"verliehen" sucht und diese zeile dann färben soll1 geht aber überhaupt nicht!


Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  if Control is TListbox then
  begin
    TListbox(Control).Canvas.FillRect(Rect);
    if pos('verliehen',TListbox(Control).Items.Strings[Index]) > 0 then
      TListbox(Control).Canvas.Font.Color := clRed
    else
    if odSelected in State then
      TListbox(Control).Canvas.Font.Color := graphics.clHighlightText
    else
      TListbox(Control).Canvas.Font.Color := graphics.clBtnText;

    TListbox(Control).Canvas.TextOut(Rect.Left, Rect.Top, TListbox(Control).Items[Index]);
  end;
end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 22:03
Zitat von Delphi Hilfe:
Description

Use OnDrawItem to write a handler for drawing of the items in list boxes with the Style values lbOwnerDrawFixed, lbOwnerDrawVariable, or lbVirtualOwnerDraw. OnDrawItem occurs when the list box needs to display an item. OnDrawItem occurs only for owner-draw list boxes.
Dann klappt es auch mit dem Nachbarn.

Wenn der Style der Listbox(im Object Inspector) auf lbStandard steht (default) dann wird das Ereignis nicht ausgelöst.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: Bestimmte Zeilen einer TListbox färben

  Alt 14. Jun 2007, 22:04
Zitat von obscureSg:
..es lediglich die schriftfarbe für alle zeilen der listbox zu färben. so ein "roter kasten" wäre auch eine hilfreiche sache.das klingt in meinen ohren aber noch schwerer =(
Ähm, der "rote Kasten" bezog sich auf mein Posting, weil irgendeiner vorher was abgeschickt hatte. Aber so könnte das schon aussehen. Suche nachher mal noch ein Beispiel. Das ist doch Kleinkram und muss gehen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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:47 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