哪一个捕捉代号用于拾取离cad光标捕捉不出现位置最近的点

二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
爱玩游戏的程序员。研究Delphi的第三方控件SynEdit,并以此写了一个编辑器以自用,虽然还有点bug。
目前处于休假状态。
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
正常来说,要真正获取光标位置,会需要。这里,我通过VB验证这现象,不使用API,直接用代码(在记事本中如果自动换行没有被选中的情况下是可以使用状态栏的,否则不会。不过最开始是显示状态栏的并且是自动换行,不过那是另一种情况了)。StatusBar不属于标准控件,在使用前先点击工程-部件将Microsoft Windows CommonControls 5.0(SP2)添加到工具栏中。新建标准EXE工程,向窗体中添加一个Text,一个Timer,一个StatusBar.Text1的MultiLine设置为True,ScrollBars设置为2;Timer1的Interval设置为10,Enabled设置为F状态栏添加第二个面板。程序运行如图:&使用Alt+PrintScreen截图会隐藏光标。&--程序调试这个程序不适用断点,因为在程序运行时Timer1的Interval值为10,在按下F5后又执行了这段代码。参考代码(调试时不要加上中文字符或其他全角字符):Private Sub Form_Load()& & StatusBar1.Panels(2).Text = "1行, 1列"End SubPrivate Sub Text1_Change()& & Timer1_TimerEnd SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)& & Timer1.Enabled = TrueEnd SubPrivate Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)& & If Timer1.Enabled = True Then Timer1.Enabled = FalseEnd SubPrivate Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)& & Timer1.Enabled = TrueEnd SubPrivate Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)& & If Timer1.Enabled = True Then Timer1.Enabled = FalseEnd SubPrivate Sub Timer1_Timer()& & Dim aPos, t, t0 As Long& & Dim lst As String& & If Text1.Text = "" Or Text1.SelStart = 0 Then& & & & StatusBar1.Panels(2).Text = "1行,1列"& & & & Exit Sub& & End If& & For i = 1 To Text1.SelStart& & & & a = Mid(Text1.Text, i, 1)& & & & aPos = InStr(i, Text1.Text, Chr(13))& & & & If aPos = 0 Then Exit For & & '如果是最后一行& & & & If Asc(a) = 13 Then t = t + 1& & & & '如果在范围内退出循环& & & & If Text1.SelStart &= aPos And InStr(1, Left(Text1.Text, aPos - 1), Chr(13)) = 0 Then Exit For& & Next& & Str0 = Str(t + 1) & "行" & & & & & & & '回车换行符的个数& & aPos = InStr(Text1.SelStart, Text1.Text, Chr(13)) & '重新获取位置& & '获取下一个回车换行符的位置& & If aPos = 0 Then & & & &'位于文本框的最后一行或仅有一行& & & & If t = 0 Then & & & & & & &'仅有一行& & & & & & Str1 = Str(Text1.SelStart + 1) & "列"& & & & Else & & & & & & & &'最后一行& & & & & & t0 = InStrRev(Text1.Text, Chr(13))& & & & & & Str1 = Text1.SelStart - t0 & "列"& & & & End If& & Else & & & '不是最后一行& & & & If t = 0 Then& & & & & & Str1 = Str(Text1.SelStart + 1) & "列"& & & & Else& & & & & & lst = InStrRev(Text1.Text, Chr(13), Text1.SelStart)& & & & & & If lst = 0 Then Exit Sub& & & & & & t0 = Text1.SelStart - lst& & & & & & Str1 = t0 & "列"& & & & End If& & End If& & 'X行,Y列& & StatusBar1.Panels(2).Text = Trim(Str0 & "," & Str1)End Sub程序运行时可能会出现“0列”的字样。不过我不推荐这么写代码。另一种办法,直接使用Timer,把Interval设置为10,Enabled为True。然后直接在Timer1_Timer中写代码就可以了。这里为方便没有使用StatusBar而是用Label,如果使用StatusBar则将Label1.Caption改为StatusBar1.Panels(1).Text(Visual Basic)或者StatusBar1.Panels[1].Text(Delphi)Visual Basic代码:'强制变量声明,如果下面的变量没有声明则出错Option ExplicitDim SubStr As StringPrivate Sub Timer1_Timer()& & Dim p As Long & & & & & & & & & & & & & &'回车换行符的位置& & Dim s1, s2 As String& & Dim EntC As Integer & & & & & & & & & & &'用于计数& & Dim i& & EntC = 1& & SubStr = Left(Text1.Text, Text1.SelStart)& & p = InStrRev(SubStr, vbCrLf)& & If p = 0 Then& & & & s1 = "1行"& & & & s2 = Str(Text1.SelStart + 1) & "列"& & & & Label1.Caption = s1 & ", " & s2& & & & Exit Sub& & Else& & & & For i = 1 To Text1.SelStart& & & & & & p = InStr(1, SubStr, vbCrLf)& & & & & & If p && 0 Then& & & & & & & & EntC = EntC + 1& & & & & & & & SubStr = Right(SubStr, Len(SubStr) - p - 1)& & & & & & End If& & & & Next& & & & s1 = Str(EntC) & "行"& & & & s2 = Str(Len(SubStr) + 1) & "列"& & & & Label1.Caption = s1 & ", " & s2& & End IfEnd SubDelphi版本代码:unit Unit1;interfaceuses& Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,& Dialogs, ExtCtrls, StdCtype& TForm1 = class(TForm)& & Memo1: TM& & Timer1: TT& & Panel1: TP& & Label1: TL& & procedure Timer1Timer(Sender: TObject);& private& & { Private declarations }& public& & { Public declarations }&var& Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);var& p, i:& s1, s2, SubStr:& EntC:begin& EntC := 1;& SubStr := Copy(Memo1.Text, 1, Memo1.SelStart);& p := Pos(#13 + #10, SubStr);& if p = 0 then begin& & s1 := '1行';& & s2 := IntToStr(Memo1.SelStart + 1) + '列';& & Label1.Caption := s1 + ', ' + s2;& end else& & & begin& & & & for I := 1 to Memo1.SelStart do begin& & & & & p := Pos(#13 + #10, SubStr);& & & & & if p && 0 then begin& & & & & & EntC :=EntC + 1;& & & & & & SubStr := Copy(SubStr,p + 1, Length(SubStr) - p - 1);& & & & && & & && & & & s1 := IntToStr(EntC) + '行';& & & & s2 := IntToStr(Length(SubStr) + 1) + '列';& & & & Label1.Caption := s1 + ', ' + s2;& & &end.上面两个代码经过调试没有发现有“0列”字样。
阅读(238)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'解析Windows记事本中的获取光标位置的代码(Visual Basic)2',
blogAbstract:'不管用户的操作系统是Windows XP还是Windows 7,系统中自带的记事本在获取光标位置时,如果从左往右选中文本,状态栏中显示光标位置的文字没有更改,但从右往左光标的位置就会更改。如图:正常来说,要真正获取光标位置,会需要'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}AutoCAD制图基础 第04章_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
AutoCAD制图基础 第04章
上传于||暂无简介
大小:1.60MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢【图文】第4章 ANSYS入门与准备_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第4章 ANSYS入门与准备
上传于||文档简介
&&第章​ ​A​N​S​Y​S​入​门​与​准​备
大小:1.84MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
AUTOCAD作业选择题打印稿
下载积分:2000
内容提示:AUTOCAD作业选择题打印稿,autocad 打印,autocad 如何打印,autocad打印比例,autocad 打印黑白,autocad打印设置,autocad 打印区域,autocad 打印 横向,autocad怎么打印,autocad打印pdf
文档格式:DOC|
浏览次数:4|
上传日期: 05:01:55|
文档星级:
该用户还上传了这些文档
AUTOCAD作业选择题打印稿
官方公共微信}

我要回帖

更多关于 cad光标捕捉设置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信