起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 296|回复: 14

[请求]关于DataGrid内容折行显示的实现**

[复制链接]
发表于 2008-5-28 10:39:17 | 显示全部楼层 |阅读模式
这个是我在DataGrid写的OnCustomDrawCell事件
procedure TCT_Form.DataGrid1CustomDrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
var
   view_max_len : Integer;             // 允许显示的最大字符长度
   view_HR_len : Integer;                  // 每行显示的字符长度
   temp : string;
   temp2: string;
begin
     if DataSetBroker1.DataSet.State = TDataSetState.dsInactive then
             exit;
     view_max_len := 15;
     view_HR_len := 5;
     // 检查内容
    if (TDataGridColumn(AColumn).FieldName= 'GZNRMS') then
    begin
       if AText.Length > view_max_len then
       begin
            AText := AText.Substring(0,view_max_len) + '...';
       end;
       // 每view_HR_len个字符换行
       temp := AText;
       temp2:= '';
       while temp.Length > view_HR_len do
       begin
            temp2 := temp2 + temp.Substring(0,view_HR_len) + #13#10; // 添加换行
            temp := temp.Substring(view_HR_len);
       end;
       if temp2 <> '' then
       begin
            temp2 := temp2 + temp;
            AText := temp2;
       end;
    end;

end;

但是没有达到我想要的效果,在浏览状态下还是只能显示一行,如下:
测试显示字符串1234567890

我想要的效果是:
测试显示字
符串123
45678
90

a1.jpg

5.05 KB, 下载次数: 170

回复

使用道具 举报

发表于 2008-5-28 11:55:18 | 显示全部楼层
1、把DataGrid 的 optionsView - edgoRowAutoHeight 属性选中
2、把字段的表现类型设置为文本
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 11:58:57 | 显示全部楼层
edgoRowAutoHeight太影响性能了,不打算采用,有没有别的方式?
好像DataGrid在显示的时候将我在OnCustomDrawCell事件添加的#13#10都处理掉了,我怎样禁止DataGrid的这些处理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 12:01:18 | 显示全部楼层
字段的表现类型设置为文本也只能在编辑状态下有用,浏览状态下还是只有一行
回复 支持 反对

使用道具 举报

发表于 2008-5-28 12:01:18 | 显示全部楼层
用表格实现可以不?
这个界面是录入的界面吗?如果是浏览的,那么设置预览状态也可以看到已经换行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 12:02:41 | 显示全部楼层
这个界面不是录入界面,只是显示一个列表浏览,但是有些字段内容比较多,需要折行显示
回复 支持 反对

使用道具 举报

发表于 2008-5-28 14:00:47 | 显示全部楼层
预览看到的是否ok呢?
或者用表格文档是否可以呢?
回复 支持 反对

使用道具 举报

发表于 2008-5-28 14:03:15 | 显示全部楼层
去网上搜一下“DELPHI StringGrid 换行”。我觉得关于Grid换行的功能,X3应该负责解决掉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 15:45:48 | 显示全部楼层
用表格的话会缺少很多事件处理,没有DataGrid方便,比如双击某行我还要弹出信息明细窗体,表格没有相关的事件进行处理吧

另:你说的预览状态是指什么?是DataSetBroker1.DataSet.State  := TDataSetState.dsBrowse
么?还是指别的什么属性?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-28 15:57:42 | 显示全部楼层
to : sjz10
用StringGrid么,绑定数据集合不好用哦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 07:05 , Processed in 0.049983 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表