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 = 'JA' then farbe := clLime else
if OracleDataSet1.Fields.Fields[2].AsString = 'NEIN' then 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