StringGrid双击列分隔线调整列宽为最适合列宽 StringGrid双击列分隔线时,能调整列宽为最适合列宽。就象Excel中的一样:双击列头上的列分隔线,调整为最合适列宽。这个功能在delphi的StringGrid中怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好象很好办呀:搜索每列的所有cell。用colstrings属性,那是一个tstrings类,找到最长的字符串,设置列宽就可以了。做个循环,多试几次就可以达到要求。 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中所有记录重画了,变成一个颜色显示了。这个情况该怎么解决呀。 如何调整image显示比例 请教ComboBox下拉列表选择的问题 图片合并问题,急!!!!!! 请问:怎么判断DBGrid中的一个网格中没有没输入数据,再进一步判断它的数据类型呢?谢谢 求滚动字幕控件 符合要求,一个人送50分!急求计算机毕业设计或有实际价值源代码! 谁能帮我推荐一个帮助文件的制作工具,谢谢!!!!!!!! 一个SQL语句 请各位大虾帮帮忙 如何在两个TTREEVIEW中拖放 【菜】如果这样的话。。。 关于刷新的问题.请多指教!
搜索每列的所有cell。用colstrings属性,那是一个tstrings类,找到最长的字符串,设置列宽就可以了。做个循环,多试几次就可以达到要求。
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中所有记录重画了,变成一个颜色显示了。这个情况该怎么解决呀。