例如: stringgrid 中9个格
            
       1    2  3
      4    5  6
      7    8  9
我将鼠标移至8那个格子时 击鼠标右键如何获得那格子的文本信息

解决方案 »

  1.   

    procedure TForm1.StringGrid1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
     var
     c,r : integer;
    begin
      StringGrid1.MouseToCell(x,y,c,r);
      showmessage(StringGrid1.Cells[c,r]);
    end;
      

  2.   


    procedure TForm1.StringGrid1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
     var
     c,r : integer;
    begin
      if button=mbRight then begin {--Èç¹û°´ÁËÓÒ¼ü--}
      StringGrid1.MouseToCell(x,y,c,r);
      showmessage(StringGrid1.Cells[c,r]);
      end;
    end;
      

  3.   


    procedure TForm1.StringGrid1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
     var
     c,r : integer;
    begin
      if button=mbRight then begin {--右键判断--}
      StringGrid1.MouseToCell(x,y,c,r);
      showmessage(StringGrid1.Cells[c,r]);
      end;
    end;
      

  4.   

    我问一下:我用TfrxCross把StringGrid的内容打印出来,为什么不能打“中文”,当StringGrid的单元格里有中文时,程序就出错!(不求得分,只求大家一起学习!)
    原代码如下: 
    procedure TForm1.FormCreate(Sender: TObject); 
    var 
    i, j: Integer; 
    begin 
    for i := 1 to 16 do 
    for j := 1 to 16 do 
    StringGrid1.Cells[i - 1, j - 1] := IntToStr(i * j); 
    end; procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    frxReport1.ShowReport; 
    end; procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent); 
    var 
    Cross: TfrxCrossView; 
    i, j: Integer; 
    begin 
    if c is TfrxCrossView then 
    begin 
    Cross := TfrxCrossView(c); 
    for i := 1 to 16 do 
    for j := 1 to 16 do 
    Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]); 
    end; 
    end; 
    这样是没有问题的!!!
    一旦,在StringGrid的任一个单元格输入“中文”字符就提示出错!提示“Could not convert variant of type(String) into type (Double)'