找回密码
 立即注册

QQ登录

只需一步,快速开始

nisnfox

论坛元老

14

主题

46

帖子

5062

积分

论坛元老

积分
5062

活字格认证

nisnfox
论坛元老   /  发表于:2012-4-13 10:29  /   查看:9858  /  回复:12
请问大神在Tx17版本中使用的是appField.bounds.location.x/y, 在Tx14中没有bounds这个属性,请问如何实现定位?谢谢谢!!

12 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-4-13 12:29:00
沙发

回复 1# nisnfox 的帖子

nisnfox 你好,
TX 没有纯粹的 Location 定位,都是基于行列位置的定位。楼主可以尝试插入 TXTextControl.Table ,在 Table 单元格输入 TextFiled,进而实现定位。
回复 使用道具 举报
nisnfox
论坛元老   /  发表于:2012-4-13 14:08:00
板凳
因为要 弹出一个 用户控件,所以要获取  TextFieldid 的x y 位置,17.0用bounds.location.x
但是 14.0没有这个属性,那怎么获取!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-13 14:57:00
地板

回复 3# nisnfox 的帖子

nisnfox 你好,
可以使用 InputPositionChanged 事件来获得当前行列值,从而进行判断当前光标是否在 TextFiled 范围内,逻辑判断是否弹出窗体。

  1.         private void textControl1_InputPositionChanged(object sender, EventArgs e)
  2.         {
  3.             int col = this.textControl1.InputPosition.Column;
  4.             int row = this.textControl1.InputPosition.Line;
  5.             if (row == 1 && col == 1)
  6.             {
  7.                 MessageBox.Show("Test");
  8.             }
  9.         }
复制代码
回复 使用道具 举报
nisnfox
论坛元老   /  发表于:2012-4-16 10:38:00
5#

tx 14问题

  1.         private void textControl1_TextFieldClicked(object sender, TXTextControl.TextFieldEventArgs e)
  2.         {

  3.             TXTextControl.ApplicationField appField = (TXTextControl.ApplicationField)e.TextField;

  4.             FieldEditor editor = new FieldEditor();
  5.             editor.SelectedField = appField;
  6.             editor.UpdateField += new EventHandler(editor_UpdateField);
  7.             editor.Cancel += new EventHandler(editor_Cancel);

  8.             editor.SelectedField = textControl1.ApplicationFields.GetItem();

  9.             Point tbLocation = new Point((appField.Bounds.Location.X -
  10.                                           textControl1.ScrollLocation.X) / dpiX,
  11.                                           (appField.Bounds.Location.Y -
  12.                                           textControl1.ScrollLocation.Y) / dpiX);

  13.             editor.Location = tbLocation;

  14.             textControl1.Controls.Add(editor);
  15.             editor.BringToFront();
  16.             editor.Show();
  17.         }
复制代码
  1. Point tbLocation = new Point((appField.Bounds.Location.X -

  2.                                           textControl1.ScrollLocation.X) / dpiX,

  3.                                           (appField.Bounds.Location.Y -

  4.                                           textControl1.ScrollLocation.Y) / dpiX);

复制代码
这一段用tx 14  怎么实现!
回复 使用道具 举报
nisnfox
论坛元老   /  发表于:2012-4-16 10:40:00
6#
  1. Point tbLocation = new Point((appField.Bounds.Location.X -

  2.                                           textControl1.ScrollLocation.X) / dpiX,

  3.                                           (appField.Bounds.Location.Y -

  4.                                           textControl1.ScrollLocation.Y) / dpiX);

复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-16 14:02:00
7#

回复 6# nisnfox 的帖子

nisnfox 你好,
可以通过获取当前点击 TextField 第一个字符的 InputPosition 去获取 Point:

  1.         private void textControl1_TextFieldClicked(object sender, TXTextControl.TextFieldEventArgs e)
  2.         {
  3.             //获取当前点击 TextField
  4.             TXTextControl.TextField currentTextFiled = e.TextField;

  5.             //获取当前行、列及 Page 索引
  6.             int currentPageIndex=this.textControl1.InputPosition.Page;
  7.             int startPositionX = currentTextFiled.Start;
  8.             int startPositionY = this.textControl1.InputPosition.Line;

  9.             //根据索引创建 InputPosition
  10.             TXTextControl.InputPosition startPosition=new TXTextControl.InputPosition(currentPageIndex ,startPositionX ,startPositionY );

  11.             //通过 ImputPostion 获取当前点击 TextField Point
  12.             Point editorLocation = startPosition.Location;
  13.         }
复制代码
回复 使用道具 举报
nisnfox
论坛元老   /  发表于:2012-4-16 16:59:00
8#
不对
X=-1
Y=-1
达不到上面的效果
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-16 17:33:00
9#

回复 8# nisnfox 的帖子

nisnfox 你好,我在楼上代码中做了修改,如果有多行,楼主可以加逻辑判断。

  1. //获取当前点击 TextField
  2.             TXTextControl.TextField currentTextFiled = e.TextField;

  3.             //获取当前行、列及 Page 索引
  4.             int currentPageIndex=this.textControl1.InputPosition.Page;
  5.             int lineLength = this.textControl1.Lines[1].Length ;
  6.             int startPositionY = currentTextFiled.Start;
  7.             
  8.             //int startPositionX = this.textControl1.InputPosition.Line%lineLength;
  9.             int startPositionX = this.textControl1.InputPosition.Line;

  10.             //根据索引创建 InputPosition
  11.             TXTextControl.InputPosition startPosition=new TXTextControl.InputPosition(currentPageIndex ,startPositionX ,startPositionY );

  12.             this.textControl1.InputPosition = startPosition;

  13.             //通过 ImputPostion 获取当前点击 TextField Point
  14.             Point editorLocation = this.textControl1.InputPosition.Location;  
复制代码
回复 使用道具 举报
nisnfox
论坛元老   /  发表于:2012-4-16 17:51:00
10#
大师还是不对!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部