掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
テキストダブルクリック時の選択範囲を補正するには? (ID:25253)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
RichEditコンポーネントでテキストをダブルクリックしたとき、 文字列が選択されますが、この選択文字の後半の数値を 省くような関数を作ったのですが、イベントが割り込んで 選択文字列が消されてしまいます。 試しにデバッガで実行するとうまく動きますが、外すと動かないのです。 どう対応すればいいでしょうか? 以下に作成したコードのサンプルですが、申し訳ありません。 C++Builderのコードですが勘弁してください。(^^)ゞ ぽりぽり 以下の関数をRichEditのマウスイベントに記述する。 RichEdit1MouseDown() { //ダブルクリックでラベルを選択する SetLabelSel(Button,Shift); } //--------------------------------------------------------------------------- //ダブルクリックでラベルを選択する void __fastcall TForm1::SetLabelSel(TMouseButton Button,TShiftState Shift) { //------------------------------------------------------------ // 選択範囲を強制する。(スペース、数値を外す)[OnMouseDownイベント] //------------------------------------------------------------ if(Button == 0 && true == Shift.Contains(ssDouble)){ //左ダブルクリック AnsiString str; AnsiString text = RichEdit1->SelText; long length = RichEdit1->SelLength; //選択範囲チェック for(long i=length;1<i;i--){ str = text.SubString(i,1); else if(0 <= str.AnsiCompare("0") && 0 >= str.AnsiCompare("9")) //0〜9チェック length--; else break; } //選択範囲再設定 if(RichEdit1->SelLength != length){ RichEdit1->SelLength = length; } } } //---------------------------------------------------------------------------
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.