ST
Steve
January 13, 2005 11:02 AM UTC
I''ve also noticed that the same occurs when I attempt to fill in my own background color in cells during the onPaint event.
Steve
AD
Administrator
Syncfusion Team
January 13, 2005 01:59 PM UTC
I am not sure you will be able to get this to work without writing a lot of code.
Your code gets its text from a visible cell. In your sample, column 1 is the only cell that has text set in it. So, when col 1 is not visible, style.Text is always empty. This would explain the text not showing as you scroll back to col 1.
Is there some reason you are not just using our floating cells support, or banneredranges or coveredranges to display information over several cells.
ST
Steve
January 13, 2005 07:17 PM UTC
I am doing my own drawing for a number of reasons, but the major reason(s) is to use GDI, cell indentions and my own images in a cell. I could probably use the CellDraw event, but I have issues adjusting the overflow when I manually indent text for a image.
Please see the attached example. When I simply draw text in a cell the overflow is fine, but when I manually adjust the rectangle to make room for the bitmap my overflow is incorrect. Is there some way I can adjust the overflow in querycell or some other event?
Run the example and press the button and you will notice the overflow issue.
Thanks,
Steve
SFOverFlow_818.zip
AD
Administrator
Syncfusion Team
January 13, 2005 08:25 PM UTC
Try shrinking the rect'' width by the amount you indent the text.
if (blnDrawImage && e.ColIndex == 1)
{
int offSet = rect.X;
rect.X +=20;
e.Graphics.DrawImage(this.imageList1.Images[0],rect.X,rect.Y);
rect.X += this.imageList1.Images[0].Width + 1;
offSet = rect.X - offSet;
rect.Width -= offSet;
}
AD
Administrator
Syncfusion Team
January 14, 2005 01:18 PM UTC
As I suspected, shrinking the rectangle does fix the immediate issue, but if you scroll to the far right and then scroll back you will notice that the overflow is not correct and that the beginning of the text is actually shown twice.
I attempted to attach a zip file, but the browser interface did not update the incident with the file location so I have sent you the file.
Although it''s not an option I played with the DisableScrollWindow flag and it didn''t make a difference either.
Thanks,
Steve
AD
Administrator
Syncfusion Team
January 14, 2005 01:23 PM UTC
Sent email to support with bitmap.
Thanks,
Steve
AD
Administrator
Syncfusion Team
January 14, 2005 03:38 PM UTC
I think you will want to set DisableScrollWindow = true.
Also, I think you need to get the floated rectangle, and not the cell rectangle.
//old code
//rect = this.gridControl1.RangeInfoToRectangle(GridRangeInfo.Cell(e.RowIndex,e.ColIndex),GridRangeOptions.MergeFloatedCells | GridRangeOptions.MergeCoveredCells);
//new code
rect = this.gridControl1.RangeInfoToRectangle(this.gridControl1.FloatingCells.FindRange(e.RowIndex, e.ColIndex));
ST
Steve
January 14, 2005 05:44 PM UTC
I did just as you suggested but the text in cell C1 is no longer appearing. The text in A1 does appear to be correct. If a cell does not float, then the FloatingCells.FindRange returns nothing. Is there not a quick call to get the rectangle that regardless if it''s floating, merged or not.
I also tried DisableScrollWindow, but it did not make a difference and as I stated earlier it''s not an option for us to turn this off as the performance issue is not acceptable.
Thanks,
Steve
AD
Administrator
Syncfusion Team
January 14, 2005 09:59 PM UTC
If rect comes back empty from that call, you can get the cell rect at that point.
rect = this.gridControl1.RangeInfoToRectangle(this.gridControl1.FloatingCells.FindRange(e.RowIndex, e.ColIndex));
if(rect.IsEmpty)
rect = this.gridControl1.RangeInfoToRectangle(GridRangeInfo.Cell(e.RowIndex,e.ColIndex),GridRangeOptions.MergeFloatedCells | GridRangeOptions.MergeCoveredCells);
ST
Steve
January 17, 2005 11:22 AM UTC
Thanks Clay. Going back to the issue of overflowing into neighboring cells, I have implemented your suggestion in the attached example in which I am "shrinking" the rectangle by the amount of indent. The issue is that when you adjust this rectangle and there is nothing to the right then the overflow should occur, but is not as the rectangle is adjusted.
Run the exe in the attached example, and you will notice that the last word does not paint unless you remove the image indent by pressing the "place image in cell button."
What I need is some way to adjust the rectangle so Syncfusion knows to further overflow the text.
Thanks for your help in these issues.
Steve
SFOverFlow2_9928.zip
ST
Steve
January 21, 2005 11:06 AM UTC
Any update to this last issue?
AD
Administrator
Syncfusion Team
January 21, 2005 11:28 AM UTC
Instead of just immediately adding the offset to the rectangle, you will have to increment the rectangle''s width a column width at the time, until either you hit an occupied column (and hence floating is not allowed), or you have increased the rectangle width by the desired offset. I think you can use rng.Right (or probably rng.Right+1) to get the first column you need to check to see if it is occupied.