如题,注意ListView1.Enabled要一直为True。

解决方案 »

  1.   

    procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    var
      i: integer;
    begin
      for i:=0 to ListView1.Items.Count - 1do
      if ListView1.Items[i].Checked then
      ListView1.Items[i].Checked := False;
    end;
      

  2.   

    lzy6204(为了忘却的记忆) 的方法估计不行,因为用程序去改变状态的话也会触发OnChange事件。
    可以考虑屏蔽掉鼠标左键按下的消息。
      

  3.   

    给你个例子看看:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, ShellAPI;type
      TForm1 = class(TForm)
        ListView1: TListView;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        LVWndProc :TWndMethod;
        procedure NewWindowProc(var msg :Tmessage);  end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      ListView1.Items.Item[0].Checked := True;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
     LVWndProc := ListView1.WindowProc;
     ListView1.WindowProc := NewWindowProc;
    end;procedure TForm1.NewWindowProc(var msg: Tmessage);
    var
      i :Integer;
    begin
      if msg.Msg = WM_LBUTTONUP then
      begin
         for i:=0 to ListView1.Items.Count - 1do
        if ListView1.Items[i].Checked then
        ListView1.Items[i].Checked := False;
      end;
      if Assigned(LVWndProc) then LVWndProc(msg);
    end;end.
      

  4.   

    lzy6204(为了忘却的记忆) ( ) 信誉:101 ----你的方法不行Kevin_Lmx(繁华阅尽) ( ) 信誉:100 -------你的方法也不行感谢你们的参与!
    -----------------------------------------------------------------
    期待高手回复
      

  5.   

    CSDN里的全都是技术上的菜鸟,灌水区的老鸟,最近问的这些问题,没有哪个有人能好好回答的。
    去大富翁看看了
      

  6.   

    自己控制了,比如说你设一个boolean类型的变量,一般情况下为false,当用语句改为checked属性时,设为true,这时你在Change事件中去判断是false还是true,如果是false你,恢复原貌,如果是true的,那就不要改它就行了。
      

  7.   

    将ListView1.ReadOnly:=True;即可,在语句中想改时再先ListView1.ReadOnly:=False;