stringgrid的一个小问题,同一列字如何换行

danycomhis 2008-09-19 04:59:19
我的代码是:stringgrid1.Cells[i, d] := Rom+#13#10+sta;换不了
原先0303VR
现在要的效果:0303
        VR
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuasoft 2008-09-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lihuasoft 的回复:]
该回复于2008-09-21 09:32:17被版主删除
[/Quote]

谢谢德贤版主帮忙删掉回复。
潜水半年,重新回来回贴,虽然回的多是一些难度不高的技术话题,但很反感这种不尊重回贴人的不负责结贴行为,因此措辞偏激了一些。事后感到言辞过于激烈,想编辑但无权限。

建议CSDN出台惩罚和投诉办法(已结贴貌似不可再由版主重新评分?)
诚然,“分不算什么”(这句老话我记忆深刻),但是要么你发零分贴,既然你发贴时投入了分数,就要公平公正地评分,这是对别人的尊重。
dyzhong 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lihuasoft 的回复:]
这里以前有一个大牛名叫“老冯”(现在这位冯老师潜水N久了)

他写过一个代码,楼主可以参考:


Delphi(Pascal) code
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var{这个DrawCell里的代码是老冯写的}
HCell: Integer;
HRow: Integer;
SCell: string;
begin
with TStringGrid(Sender) do begin
SCell := Cells[ACol, A…
[/Quote]

MARK
lihuasoft 2008-09-20
  • 打赏
  • 举报
回复
楼主是个没良心的人,鉴定完毕
danycomhis 2008-09-20
  • 打赏
  • 举报
回复
不行啊,换不了
手指风 2008-09-19
  • 打赏
  • 举报
回复
我之前写的是在StringGrid1DrawCell里用textout,自己计算坐标和rect进行draw.
然后用repaint重绘.
好像要先禁用自动重绘.
danycomhis 2008-09-19
  • 打赏
  • 举报
回复
我试试
czx33859066 2008-09-19
  • 打赏
  • 举报
回复
恩,好象要重绘的
石头--- 2008-09-19
  • 打赏
  • 举报
回复
必须重绘才行
lihuasoft 2008-09-19
  • 打赏
  • 举报
回复
这里以前有一个大牛名叫“老冯”(现在这位冯老师潜水N久了)

他写过一个代码,楼主可以参考:


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var{这个DrawCell里的代码是老冯写的}
HCell: Integer;
HRow: Integer;
SCell: string;
begin
with TStringGrid(Sender) do begin
SCell := Cells[ACol, ARow];
HRow := RowHeights[ARow];
Canvas.FillRect(Rect);
HCell := DrawText(Canvas.Handle, PChar(SCell), Length(SCell), Rect, DT_Center or DT_VCenter or DT_WORDBREAK );
if HCell > HRow then RowHeights[ARow] := HCell;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing,goAlwaysShowEditor];
end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
with TStringGrid(Sender) do
if Key=#13 then begin
Cells[Col,Row] := Cells[Col,Row]+#13+#10;
Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing,goAlwaysShowEditor];
end;
end;
lihuasoft 2008-09-19
  • 打赏
  • 举报
回复
可以在DrawCell时用DrawText重新“画”这些字符

gwhdaxia 2008-09-19
  • 打赏
  • 举报
回复
DrawGrid有DrawCell事件,可以自己画,
不知道StringGrid有没类似的事件

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧