基于一个以前的系统开发(已经有数据在里面),我想用cxGrid的cxGridDBCardView显示内容。数据库中某字段“详细内容”是ntext格式,存放的内容是rtf格式的数据。在刚开始开发的时候,我用了D6+cxGrid4.0,可惜它不支持rtf格式,显示出来的是一串处理后的字符串。后来发现,cxGrid5.0支持rtf格式,于是赶紧升级控件。将“详细内容”字段 【properties】 属性设置为【RichEdit】,显示正常。
但是新的问题又出现了,由于“详细内容”字段中的内容特别多,所以一行显示不下,需要多行显示。于是找到 cxGridDBCardView -> OptionsView -> CellAutoHeight 将其设为true,结果发现其他的字段都能正常自动根据内容调整高度。只有“详细内容”字段因为【properties】 属性设置为【RichEdit】后,就不能自动调整高度了,还是只有一行。特别遗憾的是,我把【CellHints】设置为【true】后,它的Hint功能也没有。
请教,我怎么能将“详细内容”完全显示给用户呢? 如果能回答当前鼠标点击了cxGridDBCardViewCell的哪一个坐标(哪一行,哪一列),也有分。
但是新的问题又出现了,由于“详细内容”字段中的内容特别多,所以一行显示不下,需要多行显示。于是找到 cxGridDBCardView -> OptionsView -> CellAutoHeight 将其设为true,结果发现其他的字段都能正常自动根据内容调整高度。只有“详细内容”字段因为【properties】 属性设置为【RichEdit】后,就不能自动调整高度了,还是只有一行。特别遗憾的是,我把【CellHints】设置为【true】后,它的Hint功能也没有。
请教,我怎么能将“详细内容”完全显示给用户呢? 如果能回答当前鼠标点击了cxGridDBCardViewCell的哪一个坐标(哪一行,哪一列),也有分。
解决方案 »
- 金山t盘的登录接口想自己实现如何处理
- 请问如何在一个工作表里分别操作多个工作薄
- 使用OleContainer.CreateObjectFromFile打开一个excel文件,请问怎样才能修改其中内容?
- delphi 调用oracle存储过程
- 哎 牛人也太多了 ........................................................................................................
- 特定目录下截图
- 在delphi总如何杀死进程?
- 关于主窗体工具栏的隐藏和子窗体的显示的问题,在线等待,多谢 !
- 怎样从m个数中选取n个数?(用程序实现的方法一时想不出来)
- 各位,我好苦恼,请多帮忙
- 有关DLL返回值的问题
- 非常急,手动杀毒把系统搞坏了,所有.EXE文件都打不开了
Preview->Column里先那个RichEdit字段,这样行不行啊?
没有找到你说的这个属性,能不能说清楚一点。或者是你没有看清楚我的问题?谢谢。
//////////////
选择你的TableView,之后有个Preview的属性,你展开后有一个Column的属性,你把这个属性填你要显示RFT格式的那个字段就可以了..
老兄,你可能没有看清楚我的题目吧?我说的可是cxGridDBCardView而不是cxGridDBTableView。现在的问题是不能显示rtf格式,而是这个Cell它不能多行显示,所以内容不能完全显示。而且没有Hint属性,就算在cxGrid里面设置了Hint为true,其他的Cell的Hint正常,到了这个它这就不行了。不知道大家明白了我的意思没有?
TStringGrid(cxGrid1).MouseToCell(x, y, ACol, ARow);//将鼠标的坐标X,Y转换为Col和Row
一种方法是自己更改TcxCustomEdit.InternalCanResize过程
另一种方法是自己声明一个新的RichEdit类(从它的RichEdit继承),重载CanAutoSize方法
前提是你要对cxGrid内部的一些实现比较熟悉。如果能回答当前鼠标点击了cxGridDBCardViewCell的哪一个坐标(哪一行,哪一列),也有分。
TcxGridCardView(Sender).DataController.FocusedRecordIndex
或者
MouseDown
var
AHitTest: TcxCustomGridHitTest;
AViewInfo: TcxCustomGridCellViewInfo;
begin
AHitTest := TcxGridCardView(Sender).GetHitTest(X, Y);
if (AHitTest <> nil) and (AHitTest.HitTestCode = htcell) then
begin
AViewInfo := AHitTest.ViewInfo;
if AViewInfo is TcxGridTableCellViewInfo then
TcxGridTableCellViewInfo(AViewInfo).GridRecord...//再根据GridRecord取RecordIndex
end;
end;至于哪一列,可根据
CardViewController.FocusedItem去取它的Index