stringgrid表格,我用鼠标选择一部分行,选中部分为蓝色,当我做完操作后,我希望蓝色消失

解决方案 »

  1.   

    把StringGrid的Option的goRangeSelect設為True, goRowSelect設為True可實現選擇連續的行不連續的行可能就要另外處理啦.
      

  2.   

    晕,枫叶兄快了一步,应该改为楼上的楼上的兄弟了,呵呵继续试ing!~
      

  3.   

    http://community.csdn.net/Expert/topic/4232/4232826.xml?temp=.2242853
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Buttons, Grids;type
      TForm1 = class(TForm)
        StringGrid1: TStringGrid;
        BitBtn1: TBitBtn;
        procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
          Rect: TRect; State: TGridDrawState);
        procedure FormCreate(Sender: TObject);
        procedure StringGrid1Exit(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
    if not stringgrid1.Focused then
    begin TStringGrid(Sender).Canvas.Brush.Color := clWhite;
     TStringGrid(Sender).Canvas.FillRect(Rect);
     TStringGrid(Sender).Canvas.Font.Color:=clBlack;
     TStringGrid(Sender).canvas.textout(rect.left+2,rect.top+2, TStringGrid(Sender).cells[acol,arow]);
    end;end;procedure TForm1.FormCreate(Sender: TObject);
    var
     r,c:integer;
    begin
    for r  :=0 to 4 do
     for c:=0 to 4 do
      begin
       stringgrid1.Cells[c,r]:=inttostr(r*10+c);
      end;end;procedure TForm1.StringGrid1Exit(Sender: TObject);
    var
     r,c:integer;
    begin
      for r  :=0 to 4 do
     for c:=0 to 4 do
      begin
       stringgrid1.Cells[c,r]:=inttostr(r*10+c+100);
      end;end;end.