delphi – 如何处理Synedit表名上的链接?
发布时间:2020-12-15 09:26:28 所属栏目:大数据 来源:网络整理
导读:我正在使用Delphi中的TSynEdit编写Sql编辑器. 我在荧光笔和自动填充的表名中有我的对象名称(表格,存储过程,域等),它们以蓝色和下划线显示这是我想要的但我想知道我是否可以将这些链接到一个事件我实际上可以打开那个对象. 有办法吗? a)当鼠标悬停在这样的关
我正在使用Delphi中的TSynEdit编写Sql编辑器.
我在荧光笔和自动填充的表名中有我的对象名称(表格,存储过程,域等),它们以蓝色和下划线显示这是我想要的但我想知道我是否可以将这些链接到一个事件我实际上可以打开那个对象. 有办法吗? a)当鼠标悬停在这样的关键字上时,将光标更改为handPoint? b)点击这样的关键字时执行事件,程序,功能? 谢谢你的建议. 解决方法
要获取鼠标指向的令牌信息,您可以编写例如像这样的辅助方法:
type TSynEditHelper = class helper for TSynEdit public function GetTokenInfo(const CursorPos: TPoint; out TokenType: Integer; out TokenText: UnicodeString): Boolean; overload; function GetTokenInfo(const LineCharPos: TBufferCoord; out TokenType: Integer; out TokenText: UnicodeString): Boolean; overload; end; { TSynEditHelper } function TSynEditHelper.GetTokenInfo(const CursorPos: TPoint; out TokenType: Integer; out TokenText: UnicodeString): Boolean; begin Result := GetTokenInfo(DisplayToBufferPos(PixelsToRowColumn(CursorPos.X,CursorPos.Y)),TokenType,TokenText); end; function TSynEditHelper.GetTokenInfo(const LineCharPos: TBufferCoord; out TokenType: Integer; out TokenText: UnicodeString): Boolean; var I: Integer; A: TSynHighlighterAttributes; begin Result := GetHighlighterAttriAtRowColEx(LineCharPos,TokenText,I,A); end; 并在OnMouseCursor中使用它们来设置光标和OnClick用于关键字导航: procedure TForm1.SynEdit1Click(Sender: TObject); var TokenType: Integer; TokenText: UnicodeString; begin if TSynEdit(Sender).GetTokenInfo(TSynEdit(Sender).ScreenToClient(Mouse.CursorPos),TokenText) and (TokenType = Ord(tkTableName)) then begin ShowMessage(Format('Table token clicked: %s',[TokenText])); end; end; procedure TForm1.SynEdit1MouseCursor(Sender: TObject; const ALineCharPos: TBufferCoord; var ACursor: TCursor); var TokenType: Integer; TokenText: UnicodeString; begin if TSynEdit(Sender).GetTokenInfo(ALineCharPos,TokenText) and (TokenType = Ord(tkTableName)) then ACursor := crHandPoint; end; 我找不到这个功能的原生方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |