mylj123 发表于 2014-10-22 08:31:00

textfiled的焦点问题,求斑竹指导!!!

1.多个textfield排列在一起,点击其中一个在前后动态插入textfiled。如何处理。我的是TXEDIT ACTIVEX17的?
2.FieldSetInputPos 这什么作用?常量不知道具体的数值。帮助文档里没有说明

mylj123 发表于 2014-10-22 08:49:00

补充说明:在多个textfiled排列在一起时,两个textfiled之间没有字符,textfield都是使用了双输入位置的。我希望通过fieldsetinputpos来使焦点移动到两个textfiled之间,但是没有成功。一个问题是fieldsetintputpos在参数常量没有说明。。另一个问题是如果能通过该方法将焦点移出textfiled,如何指定是移到该textfiled在前面还是后面???我已经看过其他相关帖子了。没有activex的使用说明。
另,我通过删除textfiled再全部重建已经实现了这个功能,但每次将原texfield都删除再重建,对我们程序增大了很多处理过程。既然有fieldsetinputpos方法,应该可以更简便的实现。。

Alice 发表于 2014-10-22 11:09:00

回复 1楼mylj123的帖子

1.可以使用FieldInsert方法。代码参考:
Dim Field As Integer
TXTextControl1.FieldInsert "visit the Text Control homepage"
Field = TXTextControl1.FieldCurrent
TXTextControl1.FieldType(Field) = txFieldExternalLink
TXTextControl1.FieldTypeData(Field) = _
"http://www.textcontrol.com"

2.这个方法是指:如果当前的文本输入的位置是在开始或在一个标记的文本字段的结束与双输入位置的位置,该方法可用于确定是否是内部或外部的字段位置。输入位置的字符位置没有改变。
参数:FieldInputPosition是int类型,返回bool类型。
下面表格是描述:

ParameterDescription
FieldInputPositionSpecifies the position. It can be one of the following Constants:
ValueDescription
txInsideFieldThe current input position is inside the field.
txOutsideFieldThe current input position is outside the field.
txInsideNextFieldThe specified position is inside the next field. This value is only possible, if there are two following fields without any character between the fields. In this case txInsideField is in the first field, txOutsideField is between the fields and txInsideNextField is in the second field.

mylj123 发表于 2014-10-22 11:48:00

感谢斑竹回复~~~~~~~
1.我的问题是,比如ABC三个textfield排列在一起,中间没有任何字符间隔。我想实现的功能是指定对B动态增加前后两个textfield,由于fieldinsert方法如果当前输入位置在textfield以内便插入失败。所以我想定位输入位置到A和B之间或者是B和C之间。ABC三个textfield都是使用了双输入位置。
我定位插入到B之前时,selstart = textfield.fieldstart - 1;sellength = 0,这个时候插入位置到了A中,因为没有字符间隔,当想定位插入到B之后,selstart = textfield.fieldend; sellength = 0,这个时候插入位置到了C上面,同样插入不能成功。所以问题的关键就是如何定位到AB或者BC之间。您的答复我等下试下,估计没有定位好输入位置,fieldinsert是不会成功的。
2.如果fieldinputposition只是判定位置而不是修改位置,那我就理解错了。另外关于常量我知道是这三个,我的问题是其对应的整数是多少,我是在PB中开发的,不知道怎么访问常量,只能直接用整数值。其他方法都有数据常量对应的数值,这个方法在帮助文档里没有。

Alice 发表于 2014-10-22 16:38:00

回复 4楼mylj123的帖子

设置输入位置的两种方式,和你上面提到的都类似,你可以尝试下:
1.控制输入位置的一种方式,是使用?Selection.Start
代码参考:
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();   } }
2.InputPosition是另一种控制输入位置的方式。用代码来举例,说明如何通过MouseMove事件,设置输入位置到当前鼠标的位置。
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);
}

mylj123 发表于 2014-10-22 16:58:00

回复 5楼Alice的帖子

我还是搞不定啊。。。。。。如何将输入位置移到两个textfield中间啊?:-|

Alice 发表于 2014-10-22 17:57:00

回复 6楼mylj123的帖子

根据文档来看,使用FieldSetInputPos应该可以将位置移到textfield之间。txOutsideField是控制位置在Field之外。你能否将你的Demo提交上来,我可以根据Demo验证下是否这里出现了问题。

mylj123 发表于 2014-10-23 08:26:00

回复 7楼Alice的帖子

我是用PB开发的,通过OLE的方式。如果斑竹需要我可以写一个DEMO给你看看。斑竹能不能替我查下。FieldSetInputPos的三个常量参数,txInsideField,txOutsideField,txInsideNextField分别对应的整数值是多少?我也可以自己试下。。PB中我不知道怎么直接访问这三个常量,在用其他方法访问常量时我都是直接使用的数值。

mylj123 发表于 2014-10-23 10:31:00

回复 8楼mylj123的帖子

已经解决了。谢谢斑竹。。

Alice 发表于 2014-10-23 11:05:00

回复 8楼mylj123的帖子

我这里没有你的PB的开发工具,所以搭建环境会比较复杂,还望理解。
不过我会尽力帮助你解决你的问题。

常量


FieldInputPositionConstants

txInsideField
1

txOutsideField
2

txInsideNextField
3

如果有问题欢迎提出来。
页: [1] 2
查看完整版本: textfiled的焦点问题,求斑竹指导!!!