Einzelnen Beitrag anzeigen

Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#5

Re: Zeilen in einer Listbox färben

  Alt 14. Apr 2006, 21:18
So, jetzt habe ich das auf meine Bedüfnisse umgeschrieben, aber an der Farbe ändert isch nichts.

Delphi-Quellcode:
    function NewLBItem(aListBox: TListBox; aValue: string; aIndex: Integer = -1): Integer;
    procedure ltbUserDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
    procedure LoadFromArray;
    procedure btnAddProfilClick(Sender: TObject);
    procedure btnChangeProfilClick(Sender: TObject);
    procedure cmbEntryChange(Sender: TObject);
    procedure btnAddUserClick(Sender: TObject);
    procedure btnReloadClick(Sender: TObject);
    procedure btnChangeClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;
  Adressen: Array[1..100, 1..2] of String;
  Eintraege: Integer;
implementation

{$R *.dfm}

function TfrmMain.NewLBItem(aListBox: TListBox; aValue: string; aIndex: Integer = -1): Integer;
begin
    result := aListBox.Items.Add(aValue);
end;

procedure TfrmMain.ltbUserDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  TopDif: Integer; // Gleicht die Höhendifferenz aus
begin
  with (Control as TListbox) do
  begin
    Canvas.Brush.Color := clBlack; // Hintergrundfarbe
    Canvas.Font.Color := clRed; //Schriftfarbe
  end;
  TopDif := (ltbUser.ItemHeight div 2) - (Canvas.TextHeight(#32) div 2); // Damit es in der Mitte der Zeile steht.
  Canvas.TextRect(Rect, Rect.Left, Rect.Top + TopDif, ltbUser.Items[Index]); // Und hier wird der Text gezeichnet
end;
Damit rufe ich es auf:

Delphi-Quellcode:
procedure TfrmMain.btnReloadClick(Sender: TObject);
var
  I: Integer;
begin
  ltbUser.Clear;
  For I := 1 to Eintraege do
    begin
      WebBrowser.Navigate('http://wwp.icq.com/scripts/online.dll?img=5&icq=' + Adressen[I,1]);
      While WebBrowser.Busy do
        begin
          Application.ProcessMessages;
        end;
      If WebBrowser.LocationURL = 'http://status.icq.com/5/online1.gifthen
        begin
          NewLBItem(ltbUser, Adressen[I,1]);
        end
      Else
        begin
          NewLBItem(ltbUser, Adressen[I,1]);
        end;
    end;
end;
auch wenn die obere procedure im Moment wenig Sinn macht, müsste doch eigentlich doch was passieren, oder?

Im OI habe ich den Style auch auf lbOwnerDrawFixed gesetzt.
  Mit Zitat antworten Zitat