现在有个需求,要求选中前面的复选框后自动选中当前的行,
并且把当前选中的行移动到最前行请高手帮忙解决下这个问题

解决方案 »

  1.   

    if lvInfo.Items[i].Checked= true
    lvInfo.Items[i].Selected:=true;
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ListView1.RowSelect:=True;
    end;procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      tmpItem,newItem:TListItem;
      i:Integer;
    begin
      if Button<>mbLeft then
        Exit;
      tmpItem:=ListView1.GetItemAt(X,Y);
      if tmpItem<>nil then
        if tmpItem.Checked then
        begin
          newItem:=ListView1.Items.Insert(0);
          newItem.Caption:=tmpItem.Caption;
          newItem.SubItems.Assign(tmpItem.SubItems);
          ListView1.Items.Delete(tmpItem.Index);
          newItem.Selected:=True;
        end;
    end;
      

  3.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ListView1.RowSelect:=True;
    end;procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      tmpItem,newItem:TListItem;
      i:Integer;
    begin
      if (Button<>mbLeft)or (X>16) then
        Exit;
      tmpItem:=ListView1.GetItemAt(X,Y);
      if tmpItem<>nil then
        if tmpItem.Checked then
        begin
          for i:=0 to ListView1.Items.Count-1 do
            ListView1.Items.Item[i].Checked:=False;
          newItem:=ListView1.Items.Insert(0);
          newItem.Assign(tmpItem);
          newItem.Checked:=True;
          newItem.Selected:=True;
          ListView1.Items.Delete(tmpItem.Index);
        end;
    end;