Got more questions? Find advice on: SQL | XML | Regular Expressions | Windows
in Search
Welcome to AspAdvice Sign in | Join | Help

TX Text Control

News and interesting articles about the word processing component TX Text Control.

Setting the input position in TX Text Control

In our support forums, users often asks us about how to set the input position to specific positions in the document. Even if this task sounds trivial, the question is not easy to answer. The reason is that there are many ways to set the caret to a character index position or to calculate the required index. It depends on which property values are known in your calculation to set the input position. Maybe you need to set the caret to the beginning of a TextField or at the end of a specific Page.

The following two properties can be used to manipulate the input position:Selection.Start gets or sets the starting point of the selected text. The first possible value is 0 and the last is the length of the text. Each element in the document such as tables, images, lines or pages provide a property that can be used in combination with Selection.Start. The following code shows how to iterate through all tables and their cells in order to add text to each cell:

foreach (TXTextControl.Table table in textControl1.Tables)
{
foreach (TXTextControl.TableCell cell in table.Cells)
{
textControl1.Selection.Start = cell.Start - 1;
textControl1.Selection.Text = "Cell " +
table.Cells.GetItem().Row.ToString() +
", " + table.Cells.GetItem().Column.ToString();
}
}

The TableCell.Start property is used to set the Selection.Start value. As you can see in the code, the value 1 is subtracted from the Start value. The reason is that there is a difference between the input position and the character position in a document. The following illustration shows that the input position is in front of a character position. When passing the Start value from a TableCell or TextField to the Selection.Start property, you need to subtract 1 from it's value.

Screenshot 1

The InputPosition Constructor offers other possibilities to set the input position. This class can be used to set the input position when you know an X or Y location, or the specific page, column and row numbers. The following implementations of the constructor are available:

public InputPosition(int page, int line, int column);
public InputPosition(int textPosition);
public InputPosition(int textPosition, TextFieldPosition textFieldPosition);
public InputPosition(Point location);

The first constructor creates a new input position from a page, line and column number, the second and third from a text position, which is comparable to the Selection.Start approach, and the fourth from a geometric location. The following code snippet shows how to set the input position to the current mouse position using the MouseMove event.

private void textControl1_MouseMove(object sender, MouseEventArgs e)
{
Graphics g = textControl1.CreateGraphics();
int dpi = (int)(1440 / g.DpiX);

Point newInputPosition = new Point(
(e.X * dpi) +
textControl1.ScrollLocation.X,
(e.Y * dpi) +
textControl1.ScrollLocation.Y);

textControl1.InputPosition =
new TXTextControl.InputPosition(newInputPosition);
}


About TX Text Control:

TX Text Control was originally released in 1991, since then more than 40,000 copies have been sold. Starting off as a single, small DLL, TX Text Control has made its way through 16-bit DLL and VBX versions to today‘s Enterprise edition with its .NET and ActiveX components. The recent addition to the family, TX Text Control .NET Server, offers all of TX Text Control advanced word processing functionality in an easy-to-use server-side .NET component. Customers benefit from these years of experience, large user base, and at the same time, appreciate developing with a mature, reliable product.

Contact Informations:

support@textcontrol.com

North & South America:
Phone: +1 704-370-0110
Phone: +1 877-462-4772 (toll free)

Europe:
Phone: +49 (0)421 42 70 67 10

Asia Pacific:
Phone: +886 2-2797-8508
Published Tuesday, May 10, 2011 6:11 AM by Christopher Krause

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
(optional)
(required) 
Enter the code you see below

Submit

This Blog

Syndication