StringGrid双击列分隔线时,能调整列宽为最适合列宽。就象Excel中的一样:双击列头上的列分隔线,调整为最合适列宽。这个功能在delphi的StringGrid中怎么实现?

解决方案 »

  1.   

    好象很好办呀:
    搜索每列的所有cell。用colstrings属性,那是一个tstrings类,找到最长的字符串,设置列宽就可以了。做个循环,多试几次就可以达到要求。
      

  2.   

    procedure TFrmMain.StringGrid2DrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
       case StringGrid2.Tag of
         0:
           begin
               StringGrid2.Canvas.Font.Color := clBlack;
               StringGrid2.Canvas.textrect(Rect,Rect.left,Rect.Top,StringGrid2.Cells[ACol,ARow]);
           end;
         1:
           begin
               StringGrid2.Canvas.Font.Color := clRed;
               StringGrid2.Canvas.textrect(Rect,Rect.left+2,Rect.Top+2,StringGrid2.Cells[ACol,ARow]);
           end;
         else;
       end;
    end;我这么写的代码,能实现用不同颜色标记记录,但是不添加数据,而只是显示的时候也会触发StringGrid2DrawCell事件,把StringGrid中所有记录重画了,变成一个颜色显示了。这个情况该怎么解决呀。