コントロールIDを固定で設定するには?

解決


とも  2005-04-01 07:21:13  No: 14050  IP: [192.*.*.*]

入力フィールドのコントロールIDを判定して、自動的に文字列を埋め込むアプリケーションと連動させるツールを作りたいのですが、
普通にEditコンポーネントを貼り付けただけだと、ツールを起動するたびに割り当てられるコントロールIDの値が変わってしまいます。
Editコンポーネントに固定のコントロールIDを設定するにはどうしたらよいのでしょうか。

編集    削除
 2005-04-01 08:37:01  No: 14051  IP: [192.*.*.*]

コントロールIDって  なんでしょう?
VBみたい  変なIDは、ありませんよ。

WindowHandleのことだったら
無理ってもんさ♪

tagにでも数字いれて  区別したら〜

編集    削除
りおりお  2005-04-01 10:46:29  No: 14052  IP: [192.*.*.*]

> 起動するたびに割り当てられるコントロールIDの値が変わってしまいます。

そうですね。Delphi VCL が勝手に付けてくれるようです。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := IntToStr(GetWindowLong(Edit1.Handle,GWL_ID));
end;

で確認できますね。コントロールIDは動的に変更できます。

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetWindowLong(Edit1.Handle,GWL_ID,7777);
end;

こんな感じで任意に設定できます。

編集    削除
kkk  2005-04-01 12:07:13  No: 14053  IP: [192.*.*.*]

>Editコンポーネントに固定のコントロールIDを設定するにはどうしたらよいのでしょうか。

〜さんのおっしゃる様に、EditコンポーネントのTagプロパティを利用した方がすっきりするような・・・

編集    削除
りおりお  2005-04-01 12:22:35  No: 14054  IP: [192.*.*.*]

> 自動的に文字列を埋め込むアプリケーションと連動させるツールを作りたいのですが

アプリケーションの外からは Tag プロパティーを見ることはできませんよ。

編集    削除
kkk  2005-04-01 20:14:48  No: 14055  IP: [192.*.*.*]

あっ別のアプリからということね。

編集    削除
sakiyama  2005-04-03 05:40:52  No: 14056  IP: [192.*.*.*]

SetProp、GetProp APIを使って固有IDを付けるというのはどうでしょうか

編集    削除
とも  2005-04-11 22:18:39  No: 14057  IP: [192.*.*.*]

りおりおさんに教えていただいた方法でコントロールIDの設定ができました。
どうもありがとうございます。

編集    削除