trichview.support
Re: Pixel coords of itemoffest in table cell |
Author |
Message |
Sergey Tkachenko |
Posted: 08/13/2002 16:23:43 RichView stores information about coordinates for strings, not for individual characters. So, in general case, finding coordinates of given offset in text is not trivial. If you need coordinate of given item (itemno) in the given rvdata, the code is: var ax, ay: Integer; fcurdata.getoriginex(ax,ay); fcurdata.getitemcoords(itemno,x,y); inc(x, ax); inc(y, ay); // (x,y) is a result. // checking for type of fcurdata is not necessary As for more more precise calculations... Try the following: var ax, ay, dno, doff: Integer; fcurdata.getoriginex(ax,ay); fcurdata.Item2DrawItem(itemno, itemoffs; dno, doff); x := fcurdata.DrawItems[dno].Left+ax; y := fcurdata.DrawItems[dno].Top+ay; At least y-coordinate will be calculated correctly. > I've found that in some cases just getting the coords of the item containing > the selection is not good enough - if it contains a large amount of > contiguous text, the selection may not be scrolled into view. > I know you said it would be a lot more difficult and am sorry to ask... It > only needs be a ballpark y coord so a shortcut method would probably be fine > if you can think of one. > > I tried this where the data height adjusted by the offset in the length is > added, but it doesn't allow for line height variations: > > if (fcurdata is TRVTableCellData) then > TRVTableCellData(fcurdata).getoriginex(x,y) > else > frichview.getitemcoords(itemno,x,y); > > // Adjust for offset > > inc(y,round(TCustomRVFormattedData(fcurdata).getheight*(itemoffs/length(fcur > data.items[itemno])))); > > frichview.scrollto(y); > > > > |
Powered by ABC Amber Outlook Express Converter