我的要求是点一个label,然后label上面显示的字符串所对应的listview的那一项就要显示红色.
我试图用点击label时,将listview对应item.selected:=true;然后在listview的
oncustomdrawitem里面改变canvas.font.color,但是,有执行到color这句,可是根本没有改变,还是灰色,请高手指教!!

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      StdCtrls, ComCtrls;type
      TForm1 = class(TForm)
        ListView1: TListView;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        procedure Label1Click(Sender: TObject);
        procedure ListView1CustomDrawItem(Sender: TCustomListView;
          Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      Alabel:string;implementation{$R *.dfm}procedure TForm1.Label1Click(Sender: TObject);
    begin
      Alabel:=TLabel(Sender).Caption;
      ListView1.Repaint;
    end;procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
      if item.Caption=Alabel then Sender.Canvas.Font.Color:=clred;
    end;end.