I've recently started converting my chat application over to using tables for displaying messages, and I've noticed something strange in regards to using SelectTextAt. Doing a SelectTextAt on a word early on in a chat session can cause an index out of bounds exception if there aren't enough lines (tables) in the document yet.
For example, if I do a SelectWordAt on the third item in a table that makes up the first line of a document, it will give an index out of bounds error on item 3. If I wait until there are three lines, then it won't... and it'll highlight the word properly.
I'm using the selectwordat function off the primary document - so there isn't a 3rd item in it at first, because the first item is the table that contains the word... but if there IS a third line, then highlighting works properly.
What should I do?
SelectWordAt in a Cell
-
- Posts: 5
- Joined: Sun Jan 15, 2006 9:50 am
- Contact:
-
- Site Admin
- Posts: 17559
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
-
- Posts: 5
- Joined: Sun Jan 15, 2006 9:50 am
- Contact:
Just put a normal TRichView on a form, with a TRVStyle linked to it, and use the following:
Then click on the first word... if you loop through that and have it place three tables, then there's no problem and it should select the word properly.
Code: Select all
procedure TForm1.RichView1RVMouseDown(Sender: TCustomRichView;
Button: TMouseButton; Shift: TShiftState; ItemNo, X, Y: Integer);
begin
Richview1.SelectWordAt(x,y);
end;
procedure TForm1.FormShow(Sender: TObject);
var table:TRVTableItemInfo;
i:integer;
begin
table:=TRVTableItemInfo.CreateEx(1,3,RichView1.RVData);
table.Cells[0,0].AddNL('Column 1',0,0);
table.Cells[0,1].AddNL('Column 2',0,0);
table.Cells[0,2].AddNL('Column 3',0,0);
richview1.AddItem('Table',table);
richview1.format;
end;