SynEditでマウスカーソル下の文字列を取得する
Lazarus等で使えるSynEditの話です単語であればGetWordAtRowColを使えばよいのですが
ちょっと特殊な事をしたい場合の対策法ですというか GetWordAtRowCol や GetWordBoundsAtRowColは現行のLazarus 内(ver 1.0と表示される)では多バイト文字で取得位置がズレるようですから。たぶん GetWordBoundsAtRowColに XY.X:=PhysicalToLogicalCol(LINE.XY.Y-1,XY.X): をいれたらよさそうに思うけど、ちょっと怖い。protectedメンバーを無理やり使うGetWordAtRowColの動作を見ると FTheLinesViewを見ていますが、これはPrivateです。どうしようもありません。 しかしFTheLinesViewはTextViewというプロパティで参照出ます。 当然使いたいのですが、これがprotectedなのです。そこで public にしただけのクラスを type TMySynEdit = class(TSynEdit) public property TextView; end;と実装(implementation)に作って無理やり呼び出します。実際のコード例 type
TMySynEdit = class(TSynEdit)
public
property TextView;
end;
{マウス座標の文字が "hoge"ならhogeを返す}
function GetBraketWordInSynEdit(cons
0