如题...............

解决方案 »

  1.   

    还是回答一下吧。procedure TForm1.Button1Click(Sender: TObject);
    begin
        with StringGrid1 do
        begin
            ShowMessage('从第 ' + IntToStr(Selection.Top)
                    + ' 到第 ' + IntToStr(Selection.Bottom) + ' 行');
        end;
    end;
      

  2.   

    设置stringgrid的一列来标示是否选中,下次就读这个值判断
      

  3.   


    var
      fcheck,fnocheck:tbitmap;
    implementationprocedure TForm1.FormCreate(Sender: TObject);
    var
    i:SmallInt;
    bmp:TBitmap;
    begin
    FCheck:= TBitmap.Create;
    FNoCheck:= TBitmap.Create;
    bmp:= TBitmap.create;
    try
    bmp.handle := LoadBitmap( 0, PChar(OBM_CHECKBOXES ));
    With FNoCheck Do Begin
    width := bmp.width div 4;
    height := bmp.height div 3;
    canvas.copyrect( canvas.cliprect, bmp.canvas, canvas.cliprect );
    End;
    With FCheck Do Begin
    width := bmp.width div 4;
    height := bmp.height div 3;
    canvas.copyrect(
                canvas.cliprect,
                bmp.canvas,
                rect( width, 0, 2*width, height ));End;
    finally
    bmp.free
    end;
    end;
      

  4.   

    procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer;
    Rect: TRect; State: TGridDrawState);
    begin
    if not (gdFixed in State) then
    with TStringGrid(Sender).Canvas do
    begin
    brush.Color:=clWindow;
    FillRect(Rect);
    if Grid.Cells[ACol,ARow]='yes' then
    Draw( (rect.right + rect.left - FCheck.width) div 2,
          (rect.bottom + rect.top - FCheck.height) div 2,
           FCheck )
    else
    Draw( (rect.right + rect.left - FCheck.width) div 2,
          (rect.bottom + rect.top - FCheck.height) div 2,
           FNoCheck );
    end;
    end;
      

  5.   

    晕,我不同意,如果有些行是连续选中,然后按CTRL又去单选呢?
      

  6.   

    楼主用上面的方法就可以,有一列类似checkbox,可以用鼠标点击复选
      

  7.   

    惭愧,我还不知道StringGrid可以按Ctrl单选呢,哪位大侠告诉该怎么设置了,找了半天都没找到
      

  8.   

    StringGrid可以按Ctrl单选、多选???? -_-!! 我也不知道,谁能告诉我.... 学习