基于一个以前的系统开发(已经有数据在里面),我想用cxGrid的cxGridDBCardView显示内容。数据库中某字段“详细内容”是ntext格式,存放的内容是rtf格式的数据。在刚开始开发的时候,我用了D6+cxGrid4.0,可惜它不支持rtf格式,显示出来的是一串处理后的字符串。后来发现,cxGrid5.0支持rtf格式,于是赶紧升级控件。将“详细内容”字段 【properties】 属性设置为【RichEdit】,显示正常。
    但是新的问题又出现了,由于“详细内容”字段中的内容特别多,所以一行显示不下,需要多行显示。于是找到 cxGridDBCardView -> OptionsView -> CellAutoHeight 将其设为true,结果发现其他的字段都能正常自动根据内容调整高度。只有“详细内容”字段因为【properties】 属性设置为【RichEdit】后,就不能自动调整高度了,还是只有一行。特别遗憾的是,我把【CellHints】设置为【true】后,它的Hint功能也没有。
    请教,我怎么能将“详细内容”完全显示给用户呢?    如果能回答当前鼠标点击了cxGridDBCardViewCell的哪一个坐标(哪一行,哪一列),也有分。

解决方案 »

  1.   

    设置Preview Creation效果可不可以达到你的要求
    Preview->Column里先那个RichEdit字段,这样行不行啊?
      

  2.   

    TO:GARNETT2183(KingWolves (http://kevin-lu.blogspot.com)) 
    没有找到你说的这个属性,能不能说清楚一点。或者是你没有看清楚我的问题?谢谢。
      

  3.   

    zxkid(没有人会像我这样...) OK.你可能误解了我的意思。当内容很多的情况下,我们可以通过Hint查看详细内容。就像我上面说的那样,不巧的是,Hint属性这时候也出问题了。其实直接一个DBRichEdit就可以搞定我所说的这个问题,只是,我现在处于界面整体风格的考虑,希望找到更好的解决办法。欢迎大家参与讨论。如果没有一个很好的建议,我打算散分了。
      

  4.   

    TO: feng93017(Edge) 
    //////////////
    选择你的TableView,之后有个Preview的属性,你展开后有一个Column的属性,你把这个属性填你要显示RFT格式的那个字段就可以了..
      

  5.   

    TO:GARNETT2183(KingWolves (http://kevin-lu.blogspot.com))
     
    老兄,你可能没有看清楚我的题目吧?我说的可是cxGridDBCardView而不是cxGridDBTableView。现在的问题是不能显示rtf格式,而是这个Cell它不能多行显示,所以内容不能完全显示。而且没有Hint属性,就算在cxGrid里面设置了Hint为true,其他的Cell的Hint正常,到了这个它这就不行了。不知道大家明白了我的意思没有?
      

  6.   

    奇怪了,CSDN上的Delphi牛人都到哪儿去了?都留下点足迹吧?
      

  7.   

    没用过cxGrid,只能帮你UP一下了
      

  8.   

    关于获取鼠标点击的是哪一行哪一列的问题,可以用下面的过程:
    TStringGrid(cxGrid1).MouseToCell(x, y, ACol, ARow);//将鼠标的坐标X,Y转换为Col和Row
      

  9.   

    还是不太懂你的意思CSDN论坛浏览器:http://CoolSlob.ys168.com/
      

  10.   

    将rtf格式转成其它格式不可以吗?
      

  11.   

    cxgrid倒用过,但没用过rtf格式的。
      

  12.   

    实现应该是可以实现的,我有做过类似的处理,
    一种方法是自己更改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
      

  13.   

    才学没几天,所以帮不了你!帮你UPUPUP~~~
      

  14.   

    sign ,,今天没时间,明天给你回答。
      

  15.   

    yerly(yerly) waiting for u。
      

  16.   

    我也遇到了这个问题,varchar类型的可以自动调整高度,可是text类型的却是不行,不知如何是好