Memo1.SelTextの初期化について

解決


Noby  2017-12-19 21:34:12  No: 48885

引き続きお世話になります。

Memo1.SelTextの初期化についての質問です。

下記のことを実現したいと思っております。

①Memo1の任意の文字列を選択

②Editに文字列をコピー

③②をGoogle検索

文字列が選択されていない状態の時は
④Editが空白の時は、Google(キーワードなしで)のみ起動
    し、
もし、Editに文字列が入力をされていた(直接キーワード入力)場合は
③②をGoogle検索

ちなみに、①〜③は出来たのですが、
④が出来ません。調べてみますと、Memo1.SelTextに直前まで選択していた値が
入力されているようです。

①②Edit1.Text:=Memo1.SelText;

③SURL:='https://www.google.com/search?hl=ja&output=search&q=' + HTTPEncode(UTF8Encode(Edit1.Text));
   ShellExecute(Application.Handle,'open',Pchar(SURL),NiL,NiL,SW_SHOW);

ここまでは出来ました。

そこで、SelTextを初期化しようと思って、

Memo1.SelText:='';//←これで初期化しようとしましたが、これだと選択していないのに、直前の選択テキストが
                            Memo1から消えてしまいます。

さらに、以下のコードに変更してみましたが、

Memo1.SetFocus;//←この状態でもMemo1.SelTextに文字列が入った状態になっているようです。

SelTextの初期化が可能ではないのでしたら、文字列が選択されている
かどうかを判定する方法がありましたら教えていただけましたら助かります。


KONNOYA  2017-12-19 21:45:48  No: 48886

単純に Edit1 の文字列を調べてNULLなら通常起動で良いのでは?

  if Edit1.Text = '' then
  begin
    ShellExecute( HWND( Self ), 'open', PChar( 'https://www.google.co.jp/' ), '', '', SW_SHOWNORMAL );
  end else
  begin
    ・・・
  end;


Noby  2017-12-19 22:18:26  No: 48887

KONNOYAさん
書込みありがとうございます。

Edit1.Textは、Memo.SelTextから代入されるために選択が解除されて
いないとNULLにならないので、

下記で実現は出来ると思ったのですが、SelTextの選択の解除が
出来ずに困っているということです。
SetFocusだけでは解除できないようでSelTextの解除はどのように
行うのでしょうか?  

If Memo1.SelText='' then  
 begin
  SURL:='https://www.google.com/search?hl=ja&output=search&q=';
 end
 else
  begin
    Edit1.Text:=Memo1.SelText;
    SURL:='https://www.google.com/search?hl=ja&output=search&q=' + HTTPEncode(UTF8Encode(Edit1.Text));
    Memo1.SetFocus;
 end;
 ShellExecute(Application.Handle,'open',Pchar(SURL),NiL,NiL,SW_SHOW);
end;


KONNOYA  2017-12-19 22:38:06  No: 48888

どのトリガ(イベント)で memo1 から Edit1 への文字列コピーを行っていますか?

Memo1.SetLength := 0;

は、どうでしょう?


KONNOYA  2017-12-19 22:39:00  No: 48889

間違えました失礼。

Memo1.SelLength := 0;

でした。


Noby  2017-12-19 23:52:08  No: 48890

KONNOYAさん

>Memo1.SelLength := 0; 

一部コードを追加修正しましたが、上記で目的を達成できました。

グーグルでさんざん検索したのですが、探せなかったので大変

助かりました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加