起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 378|回复: 10

【结帖】怎样实现代码控制表格文档某一行的行高**

[复制链接]
发表于 2009-7-2 17:44:01 | 显示全部楼层 |阅读模式
表格文档的一个单元格显示数据集中的一个文本类型的字段

想实现根据文本的大小,动态设置它的行高,怎么实现?

试了一下,txmxx(docview1.doc).RowHeights[9]:=30 ,这样的语句对于行高没有起作用,这个单元格在文档的数据集区域中
回复

使用道具 举报

发表于 2009-7-2 17:48:01 | 显示全部楼层
http://bbs.justep.com/forum.php?mod=viewthread&tid=19366
或者用设置的方式,设置自动行高。论坛有答案。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-2 17:52:52 | 显示全部楼层
这个帖子我看过了,整个表格都是设计好了,然后也都连接字段,现在就是想根据某个字段的大小控制行高。
自动行高只有在打印预览的时候能行吧?而且是整个数据集区域都会自动行高。

sheetdoc中有rowheigth这个属性,但是为什么设置不起作用?
回复 支持 反对

使用道具 举报

发表于 2009-7-2 18:16:58 | 显示全部楼层
对表格文档的属性做修改后,需要重新打开doc
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-2 18:32:24 | 显示全部楼层

aa

txmxx(docview1.doc).RowHeights[13]:=300;
   txmxx(docview1.doc).Close;
   txmxx(docview1.doc).Open(    tdocmode.dmView,docview1);
我指定的行数好像不起作用,这样设置完以后,都是区域前面增加很多空白而已,如图:

未命名11.jpg

16.75 KB, 下载次数: 188

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-2 18:34:17 | 显示全部楼层

a

文档设计如下,我现在的目的就是想动态控制完成人和完成单位这个行高:

未命名12.jpg

82.96 KB, 下载次数: 184

回复 支持 反对

使用道具 举报

发表于 2009-7-2 18:44:58 | 显示全部楼层
楼主,你逐行调整一下代码

估计是.RowHeights[13]的行索引指定错误了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-2 18:56:51 | 显示全部楼层
行索引,我已经试了很多个不同的行号了,都是一样的效果,在区域前增加

在数据集区域中的行能这样代码指定行高吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-2 19:10:37 | 显示全部楼层
只要设置的行数是大于0的,都会变成设置第二行的高度,不知道什么原因
回复 支持 反对

使用道具 举报

发表于 2009-7-3 09:18:00 | 显示全部楼层
楼主,我做了个例子,你看看吧

var
  lSheetDoc : TSheetDoc;
  lSheet : TDataSheet;
  lFieldCell: TDataFieldCell;
  lDataSheetArea : TDataSheetArea;
begin
  lSheetDoc := TSheetDoc(dv.Doc);
  lSheet := TDataSheet(lSheetDoc.Sheet);
  {设置表格标题}
  lSheet.CellTypes[1, 1] := TCellType.ctCell;       //静态单元格
  lSheet.Cells[1, 1].AsString := '自定义表格文档';
  lSheet.Cells[1, 1].HorzAlign := Justep.Forms.jsGraphics.THorzAlign.haCenter; //对齐方式
  lSheet.Cells[1, 1].VertAlign := Justep.Forms.jsGraphics.TVertAlign.vaCenter;
  lSheet.Cells[1, 1].Font.Size := 18;
  lSheet.Cells[1, 1].Bounds := Classes.Rect(1,1,6,3); //合并单元格
  {设置文档列宽}
  lsheet.ColWidths[1] := 260;
  lsheet.ColWidths[2] := 100;
  //lsheet.ColWidths[3] := ;
  //lsheet.ColWidths[4] := ;
  //lsheet.ColWidths[5] := ;
  {行高}
  lsheet.RowHeights[4] := 100;
  lsheet.RowHeights[5] := 50;

  {定义字段单元格}
  //Cells[col, row]
  // a 字段定义
  lSheet.CellTypes[1, 4] := TCellType.ctFieldLabel;   //预定义单元格类型
  lFieldCell := lSheet.Cells[1, 4] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;   //绑定数据集
  lFieldCell.FieldName := 'a';                        //绑定字段
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight,
    TCellSide.sBottom];                               //画边框
  lSheet.CellTypes[1, 5] := TCellType.ctField;
  lFieldCell := lSheet.Cells[1, 5] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'a';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  // b 字段定义
  lSheet.CellTypes[2, 4] := TCellType.ctFieldLabel;
  lFieldCell := lSheet.Cells[2, 4] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'b';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  lSheet.CellTypes[2, 5] := TCellType.ctField;
  lFieldCell := lSheet.Cells[2, 5] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'b';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  // c 字段定义
  lSheet.CellTypes[3, 4] := TCellType.ctFieldLabel;
  lFieldCell := lSheet.Cells[3, 4] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'c';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  lSheet.CellTypes[3, 5] := TCellType.ctField;
  lFieldCell := lSheet.Cells[3, 5] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'c';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  // d 字段定义
  lSheet.CellTypes[4, 4] := TCellType.ctFieldLabel;
  lFieldCell := lSheet.Cells[4, 4] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'd';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  lSheet.CellTypes[4, 5] := TCellType.ctField;
  lFieldCell := lSheet.Cells[4, 5] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'd';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  // e 字段定义
  lSheet.CellTypes[5, 4] := TCellType.ctFieldLabel;
  lFieldCell := lSheet.Cells[5, 4] as TDataFieldCell;
  lFieldCell.CellType := TCellType.ctFieldLabel;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'e';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];
  lSheet.CellTypes[5, 5] := TCellType.ctField;
  lFieldCell := lSheet.Cells[5, 5] as TDataFieldCell;
  lFieldCell.DataSetID := DataSetBroker1.DataSetID;
  lFieldCell.FieldName := 'e';
  lFieldCell.Sides := [TCellSide.sLeft, TCellSide.sTop, TCellSide.sRight, TCellSide.sBottom];

  {设置数据集区域}
  lSheet.Areas.Clear;
  lDataSheetArea := lSheet.Areas.Add(TAreaType.atDBArea) as TDataSheetArea;
  lDataSheetArea.DataSetDefID := DataSetBroker1.DataSetDefID;
  lDataSheetArea.DataSetID := DataSetBroker1.DataSetID;
  lDataSheetArea.BoundsRect := Classes.Bounds(1, 4, 5, 2);
  lDataSheetArea.TitleRows := 1;
  lDataSheetArea.EditorRepeatCount := 10;
  lDataSheetArea.EditorRepeatMode := TEditorRepeatMode.ermLimit;

  lSheetDoc.Close;
  dv.OpenView(TDocMode.dmEdit);
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-19 06:07 , Processed in 0.041239 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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