文字がなければあるアクションを使用できなくするには?

解決


テキストエディタに挑戦  2004-03-30 12:32:20  No: 8060  IP: [192.*.*.*]

初心者です。宜しくお願いいたします。

メモ帳の切り取りなどのように文字がなければアクション(TEditCopyなどの標準アクションではなく独自のアクション)を使用できないようにするにはどうすればよいでしょうか?

編集    削除
たかみちえ  URL  2004-03-30 17:53:41  No: 8061  IP: [192.*.*.*]

アクションのEnabledを変更します。
わたしはApplicationEvents.OnIdleで一括処理(前アクションのEnabled判定)するようにしています。

編集    削除
るるとん@K  2004-03-30 18:08:35  No: 8062  IP: [192.*.*.*]

選択範囲が変わると実行されるイベントがあったような気がします(PDAからの投稿なので名前分からん

編集    削除
るるとん@K  2004-03-30 18:16:59  No: 8063  IP: [192.*.*.*]

***.Enabled:=Memo1.SelText<>'';

***.Enabled:=Length(Memo1.SelText)>0;
***はメニューやらボタンです

編集    削除
ふぐちゃん  2004-03-30 22:33:08  No: 8064  IP: [192.*.*.*]

> メモ帳の切り取りなどのように文字がなければ
正確には「文字列が選択されていなければ」かな?

エディタ部分がTMemoで切り取りのアクションのNameプロパティがactCutだとすると、
私なら下のよう書くと思います。

// actCutのOnExecute
procedure TForm1.actCutExecute(Sender: TObject);
begin
  Memo1.CutToClipboard;
end;

// actCutのOnUpdate
procedure TForm1.actCutUpdate(Sender: TObject);
begin
  actCut.Enabled := Memo1.SelLength > 0;
end;

編集    削除
テキストエディタに挑戦  2004-03-31 00:18:42  No: 8065  IP: [192.*.*.*]

たかみちえさん、るるとん@Kさん、ふぐちゃんさん、返信ありがとうございます。

OnUpdateに書けばよいのですね。

皆様どうもありがとうございました。

編集    削除