入力フィールドのコントロールIDを判定して、自動的に文字列を埋め込むアプリケーションと連動させるツールを作りたいのですが、
普通にEditコンポーネントを貼り付けただけだと、ツールを起動するたびに割り当てられるコントロールIDの値が変わってしまいます。
Editコンポーネントに固定のコントロールIDを設定するにはどうしたらよいのでしょうか。
コントロールIDって なんでしょう?
VBみたい 変なIDは、ありませんよ。
WindowHandleのことだったら
無理ってもんさ♪
tagにでも数字いれて 区別したら〜
> 起動するたびに割り当てられるコントロール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;
こんな感じで任意に設定できます。
>Editコンポーネントに固定のコントロールIDを設定するにはどうしたらよいのでしょうか。
〜さんのおっしゃる様に、EditコンポーネントのTagプロパティを利用した方がすっきりするような・・・
> 自動的に文字列を埋め込むアプリケーションと連動させるツールを作りたいのですが
アプリケーションの外からは Tag プロパティーを見ることはできませんよ。
あっ別のアプリからということね。
SetProp、GetProp APIを使って固有IDを付けるというのはどうでしょうか
りおりおさんに教えていただいた方法でコントロールIDの設定ができました。
どうもありがとうございます。
ツイート | ![]() |