找回密码
 立即注册

QQ登录

只需一步,快速开始

hurl2002

初级会员

12

主题

39

帖子

348

积分

初级会员

积分
348

活字格认证

hurl2002
初级会员   /  发表于:2015-12-23 22:09  /   查看:3922  /  回复:6
请问版主 用代码插入图片文件,如何能插在光标所在的位置

6 个回复

倒序浏览
hurl2002
初级会员   /  发表于:2015-12-24 09:24:00
沙发
TXTextControl.ImageInsert FileName, TextPos, Alignment, PosX, PosY, ScaleX, ScaleY, TextFlow, DistanceL, DistanceT, DistanceR, DistanceB

我如何获得当前鼠标所在位置的PosX,PosY
回复 使用道具 举报
gw0506
超级版主   /  发表于:2015-12-24 10:07:00
板凳
你是什么时机做的这件事?
回复 使用道具 举报
hurl2002
初级会员   /  发表于:2015-12-24 11:02:00
地板
这个时机:右键调出菜单,选择插入图片
回复 使用道具 举报
gw0506
超级版主   /  发表于:2015-12-24 11:27:00
5#
那你是不是有mouseclick事件,其中获取鼠标位置。
另外一个办法是去textcontrol的selection信息。
回复 使用道具 举报
hurl2002
初级会员   /  发表于:2015-12-24 22:13:00
6#
我在 mousedown事件中从参数获得ocx_x,ocx_y,但把这个值放到(TXTextControl.ImageInsert FileName, TextPos, Alignment, PosX, PosY, ScaleX, ScaleY, TextFlow, DistanceL, DistanceT, DistanceR, DistanceB)的PosX, PosY,插入的位置不对,是不是单位不对的原因,如果是如何将ocx_x,ocx_y转换一下
回复 使用道具 举报
gw0506
超级版主   /  发表于:2015-12-25 10:42:00
7#
肯定要转换,一方面是单位不同,TX的单位是“提”(twips,200 twips 等于10 point),另一方面,事件中的位置应该是相对整个窗口的,不是相对于控件的。所以你还要自己算一下便宜量。

  1. [Delphi]
  2. procedure TForm1.Insert1Click(Sender: TObject);
  3. begin OpenDialog1.Title := 'Insert Image';
  4. OpenDialog1.Filename := '';
  5. OpenDialog1.Filter := TXTextControl1.ImageFilters;
  6. OpenDialog1.FilterIndex := 1;
  7. OpenDialog1.Options := [ofPathMustExist, ofFileMustExist, ofHideReadOnly];
  8. if OpenDialog1.Execute then begin try TXTextControl1.ImageInsert(OpenDialog1.Filename,-1, 1, 0, 0, 100, 100, 3, 0, 0, 0, 0);
  9. except MessageDlg('Cannot insert image: ' + OpenDialog1.filename + '.', mtError, [mbOK], 0);
  10. end;
  11. end;
  12. end;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部