Form1.ActiveControl.〜〜〜 について

解決


α  2005-03-28 23:02:00  No: 14012

はじめましてαと申します

一種のテキストエディタを作ろうと思っているのですが
メニューバーの「編集」部分の「コピー」「貼り付け」等において

procedure TForm1.mmnCopyClick(Sender: TObject);
begin
  if Form1.ActiveControl.ClassName = 'TMemo' then
    Form1.ActiveControl.CopyToClipboard;
end;

としたのですが、『未定義の識別子 : 'CopyToClipboard'』と出てしまいます
複数あるTMemoのいづれにフォーカスがあっても良いようにしたいですが
これを回避するにはどうすれば良いのでしょうか?

とりあえず臨時として

procedure TForm1.mmnCopyClick(Sender: TObject);
begin
  if Memo1.Focused = true then Memo1.CopyToClipboard;
  if Memo2.Focused = true then Memo2.CopyToClipboard;
  if Memo3.Focused = true then Memo3.CopyToClipboard;
  if Memo4.Focused = true then Memo4.CopyToClipboard;
end;

としております(貼り付け、カット、削除、やり直しも同様です)


ふぐちゃん  2005-03-28 23:18:47  No: 14013

これでどうでしょうか。

procedure TForm1.mmnCopyClick(Sender: TObject);
begin
  if ActiveControl.ClassName = 'TMemo' then
    TMemo(ActiveControl).CopyToClipboard;
end;


ふぐちゃん  2005-03-29 01:00:48  No: 14014

上のコードですが、is演算子を使って書いた方がよいでしょうか。

procedure TForm1.mmnCopyClick(Sender: TObject);
begin
  if ActiveControl is TMemo then
    TMemo(ActiveControl).CopyToClipboard;
end;


α  2005-03-29 01:05:32  No: 14015

ふぐちゃんさん有難うございます
目的どおりに動いてくれました!


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

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






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