現在のフォーカスを識別するには?

解決


チャトラ  2002-05-12 01:50:20  No: 858

初心者の質問ですいません。
現在のフォーカス名を取得したいのですが、どうしたらいいのかが
わかりません。どなたかご教授願います。
例:
  複数のボタンがあって
procedure TForm1.btClick(Sender: TObject);
var
 btname : string;
begin
 btname : 〜.name; //ここで現在のボタンの名前を取得したい
 with btname do    //ここの記述もわかりません
    begin
      TOP:=100;
      LEFT:=200;
    end;
end;


にしの  2002-05-12 07:06:52  No: 859

フォーカスがあるかどうか解りませんが、このOnClickイベントを呼び出した元は、Senderで解ります。

btname := TButton(Sender);

で、btnameが押されたボタンになります。


チャトラ  2002-05-12 09:20:14  No: 860

にしのさん、早速のご教授有難うございます。
今回の場合、変数をTButtonクラスで宣言することでできましたが、
これがもし、多種のクラスの場合はどうすればいいのでしょうか?
参考例があれば是非教えていただきたいのですが・・・。


へびあしくん  2002-05-12 09:59:48  No: 861

以下のようにすれば btname に代入しなくても済みますね。
as の後に呼び出したもの(TObject)を書けばOK。

with Sender as TButton do
with Sender as TBitBtn do
with Sender as TSpeedButton do


チャトラ  2002-05-18 06:08:16  No: 862

へびあしくん(さん?)レスありがとうございます。
どうも僕は理解力がないようで、
With Sender as (TObject) do  を複数書けということでは
ないですよね?
目的は複数タイプのクラスの、あるイベントを一つのロジックで行いたい
ということなのですが。
しかし、また新たなやり方を教わったので早速使ってみます。
ありがとうございました。


チャトラ  2002-05-18 06:09:22  No: 863

解決チェック忘れました(f^^)


とんそく  2002-05-18 09:02:36  No: 864

> 目的は複数タイプのクラスの、あるイベントを一つのロジックで行いたい
> ということなのですが。

複数の違う種類のコントロールに同じ処理をしたいなら、以下のように
すべて TButton キャストすればOK。(共通のプロパティを設定する場合)
※ OnClick イベントに反応しないコントロールは、OnEnter で。

  with TButton(Sender)  do begin
    TOP  := 100;
    LEFT := 200;
  end;

もし、コントロールの種類ごとに別の処理をしたいのなら、

  if Sender is TComboBox then begin
    TComboBox(Sender).TOP  := 250;
    TComboBox(Sender).LEFT := 200;
  end else
  if Sender is TListBox then begin
    TListBox(Sender).TOP  := 200;
    TListBox(Sender).LEFT := 200;
  end else
  if Sender is TMemo then begin
    TMemo(Sender).TOP  := 150;
    TMemo(Sender).LEFT := 200;
  end else
  if Sender is TSpeedButton then begin
    TButton(Sender).TOP  := 150;
    TButton(Sender).LEFT := 400;
  end else
  if Sender is TBitBtn then begin
    TButton(Sender).TOP  := 150;
    TButton(Sender).LEFT := 300;
  end else
  with TButton(Sender)  do begin
    TOP  := 100;
    LEFT := 200;
  end;


チャトラ  2002-05-19 02:46:13  No: 865

とんそくさん。有難うございます。
なるほど、大変勉強になりました。早速使ってみます。
これからもよろしくお願いします。


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








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