Einzelnen Beitrag anzeigen

Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#1

Färben der ListViewzeile funzt nicht ganz

  Alt 25. Aug 2004, 09:54
Ich bin gerade dabei eine Anwendung zur Anwesenheitskontrolle der Mitarbeiter für die Firma in der ich arbeite zu schreiben. Dabei läuft auf dem PC des Mitarbeiters, der in eine OracleDB schreibt. Über die Serveranwendung kann man dann den jeweiligen Status des Mitarbeiters sehen. Ich wollte nun, um es übersichtlicher darzustellen, die Zeilen, in denen steht, das der User angemeldet ist oder nicht, farbig markieren. Doch komischerweiße markiert er alle in der selben Farbe, egal ob angemeldet oder nicht.

Prozedur zum aktualisieren der Liste:
Delphi-Quellcode:
procedure TfrmMain.prcRefreshLists;
var
   NewString: String;
   i: integer;
   ListItem: TListItem;
begin
     //EDV aktualisieren
     lvEDV.Items.Clear;
     OracleDataSet1.Active:=false;
     OracleDataSet1.SQL.Add('select nachname, vorname, angemeldet, loginzeit, urlaub_bis, krank_bis from elka_onlinev2 where abteilung = ''EDV''');
     OracleDataSet1.Active:=true;

     OracleDataSet1.First;
     for i := 1 to OracleDataSet1.RecordCount
     do begin
        NewString := OracleDataSet1.Fields.Fields[0].AsString +' '+ OracleDataSet1.Fields.Fields[1].AsString +' '+ OracleDataSet1.Fields.Fields[2].AsString +' '+ OracleDataSet1.Fields.Fields[3].AsString +' '+ OracleDataSet1.Fields.Fields[4].AsString + OracleDataSet1.Fields.Fields[5].AsString;
        if OracleDataSet1.Fields.Fields[2].AsString = 'JAthen farbe := clLime else
        if OracleDataSet1.Fields.Fields[2].AsString = 'NEINthen farbe := clRed;
        Edit1.Text:=OracleDataSet1.Fields.Fields[2].AsString;
        if OracleDataSet1.RecordCount >= 0
        then begin
             ListItem := lvEDV.Items.Add;
             ListItem.Caption := NewString;
        end;
        OracleDataSet1.Next;
     end;
end;
Prozedur zum markieren der Zeilen:
Delphi-Quellcode:
procedure TfrmMain.lvEDVCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
     lvEDV.Canvas.Brush.Color := farbe;
end;
Hab ich noch was vergessen? Hatte den Code aus der DP.

MfG
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat