Thema: Delphi Farbige Listbox

Einzelnen Beitrag anzeigen

ManfredG

Registriert seit: 12. Feb 2007
Ort: Berlin
34 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Farbige Listbox

  Alt 29. Dez 2007, 12:21
Vielleicht nicht elegant, aber wie wärs mit:

Delphi-Quellcode:
Listbox3.Clear;
if assigned(FResult) then begin
    if FMysql.Status<>MYSQL_STATUS_READY then
      ShowMessage('Ein Ergebnis wurde unvollständig gelesen!');
      FreeAndNil(FResult);
  end;
FResult := FMysql.query('select * from users;', true, ex);
  if assigned(FResult) then
  begin
  FResult.First;
          for j:=0 to FResult.RowsCount-1 do
          begin
          if FResult.FieldValuebyname('status')='onlinethen
          begin
          //Hier muss die Schrift grün werden
           ListBox3.Items.InsertObject(0, FResult.FieldValuebyname('login'), TObject(clGreen));
          end
          else
          begin
        //Hier muss die Schrift rot werden
           ListBox3.Items.InsertObject(0, FResult.FieldValuebyname('login'), TObject(clRed));
          end;
        FResult.Next;
      end;
  end
  else
Das würde für jede Zeile die Farbe festhalten, im TObject-Zeiger dieser Zeile.
Danach mußt du aber trotzdem OnDrawItem erstellen, damit die Farbe auch dargestellt wird.
Nach der Methode von @Hansa wäre das:

Delphi-Quellcode:
procedure TForm1.ListBox3DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  Listbox3.Canvas.Brush.Color := TColor(ListBox3.Items.Objects[Index]);
  Listbox3.Canvas.FillRect(Rect);
  Listbox3.Canvas.TextOut(Rect.Left, Rect.Top, Listbox3.Items[Index]);
end;
Für ListBox3 - Style auf lbOwnerDrawFixed - stellen.
Gruß Manfred
Manfred Götze
  Mit Zitat antworten Zitat