過去の桐井戸端BBS (桐ver.8)
20974 次に開くフォームのウィンドウハンドルを取得するにはどうしたらよいのでしょうか MK 2003/06/20-12:09
次に開くフォームのウィンドウハンドルを取得するにはどんなやりかたがありますか?

フォームに組込変数の&hwindowを配置するとき、局所で宣言しようとすると既に使われている旨のメッセージが出るし、
かといって宣言しないで貼り付けると整合性がない旨のメッセージが出ますね。
これって、おかしいと思います。
それと、*.KEV ファイルを持つフォームを開いて、ツールの変数管理を見ると
局所に&hwindowが出現しますが、*.KEV ファイルを持たない場合は出現しません。
当然、フォーム上に&hwindowを表示しても値は 0 となります。
起動する桐を一つだけで、複数のフォーム(*.KEV 付)を開き&hwindowの値を見ましたが、
同一値を表示する場合もありました(1 を表示した)。
また 40 から表示するものもあります。

なぜ知りたいのか、それはフォームのオブジェクト属性リストファイルを作りたいからです。
それによって次の段階のオブジェクト操作が可能に・・・・
20975 Re:次に開くフォームのウィンドウハンドルを取得するには? うにん 2003/06/20-12:31
記事番号20974へのコメント
>次に開くフォームのウィンドウハンドルを取得するにはどんなやりかたがあります
>か?

「次に」は取得できないと思います。
現在開いているウィンドウのリストは「ウィンドウリスト取得」コマンドでできます。
20978 Re:次に開くフォームのウィンドウハンドルを取得するには? ONnoji 2003/06/20-12:51
記事番号20974へのコメント
MKさん

>次に開くフォームのウィンドウハンドルを取得するにはどんなやりかたがあります
>か?
>フォームに組込変数の&hwindowを配置するとき、局所で宣言しようとすると
>既に使われている旨のメッセージが出るし、かといって宣言しないで貼り付けると
>整合性がない旨のメッセージが出ますね。

MKさん、こんにちは。

イベントハンドラ処理の実行中にエラーが発生しました
KU1167:指定の変数はすでに定数として定義されています
詳細:&hwindow

のことですね。

>これって、おかしいと思います。

とも言えますが、私には桐が不親切だな思います。
ただし、イベント処理( .kev )がセットされていなければ、
&hwindow は生成されないようなので仕方がないかなとも思います。

話がそれましたが、&hwindow の値は自動で編集できないのですから、

&hwindow と書く変わりに #変数( "hwindow" ) と記述すれば、
整合性云々のメッセージは表示されなくなると思います。

>それと、*.KEV ファイルを持つフォームを開いて、ツールの変数管理を見ると
>局所に&hwindowが出現しますが、*.KEV ファイルを持たない場合は出現しません。
>当然、フォーム上に&hwindowを表示しても値は 0 となります。
>起動する桐を一つだけで、複数のフォーム(*.KEV 付)を開き&hwindowの値を見まし
>たが、同一値を表示する場合もありました(1 を表示した)。
>また 40 から表示するものもあります。

通常の場合ですが、
40からのフォームは編集対象表を持たないフォームです。
1からのフォームは編集対象表があるフォームになります。

外していたらすいません。


20979 Re:次に開くフォームのウィンドウハンドルを取得するには? ONnoji 2003/06/20-13:06
記事番号20978へのコメント
MKさん、こんにちは。

桐のウィンドウハンドルの話題ならば、
桐のバージョンやspによって微妙に違うことが…(@_@)

老婆心ながら…
従って、お使いの桐のバージョンとspを明確にして投稿された方がいいと思います。

<蛇足>

最近この掲示板に投稿される内容の多くが桐のバージョンが不明な場合がありますが、
これではリプライが困難な場合が多々あります。
だって、桐ver.8 と 桐ver.9は全く同じではないのですよ〜。
皆様、よろしくお願いいたします。
20981 Re:次に開くフォームのウィンドウハンドルを取得するには? 悲しげ 2003/06/20-15:34
記事番号20974へのコメント
>次に開くフォームのウィンドウハンドルを取得するにはどんなやりかたが
>ありますか?

次に開くものは(もしかしたら表ウィンドウかもしれないし)、ともかく不定(未定)なので、
ウィンドウハンドルを確実に予測して取得することはそもそも不可能なのではないでしょうか?

>なぜ知りたいのか、それはフォームのオブジェクト属性リストファイルを
>作りたいからです。それによって次の段階のオブジェクト操作が可能に・・・・

&hwindowの値は、確か「フォーム開始」イベント時に取得できたと思います。
が、既にフォームをオープンしている場合は、自らのウィンドウハンドルを知る必要は全く無いことにもなります。
併せて、この時点(フォーム開始時)では既にフォームの各種オブジェクトは全面展開していて、
表示されていないだけだったと記憶します。
よって、ここの時点で「フォームのオブジェクト属性リストファイルを作り」
以って「次の段階のオブジェクト操作」を記述させればよいのではないかと
単純に思ったりしたのですが。


20984 Re:次に開くフォームのウィンドウハンドルを取得するには? 悲しげ 2003/06/20-15:54
記事番号20981へのコメント
>が、既にフォームをオープンしている場合は、自らのウィンドウハンドルを
>知る必要は全く無いことにもなります。

この点は、「ハンドル=」の記述を省略すれば自らのフォームを指すだけのことですし、
またサブフォームからメインフォームを操作する場合等で、
これを記述した場合でも「ハンドル=&hwindow」とするだけで、
ハンドルの値を定数として記述することはない……と云う意味で、です。
21075 返事が遅くなりました。 MK 2003/06/24-14:11
記事番号20974へのコメント
みなさんどうもありがとうございました。
返事が遅れてすみません。
みなさんのご指導を受けて、試した結果を報告します。
次に開くフォームの kev フォーム開始に、
クリップボード 設定,#STR(&hwindow),制御文字変換=しない
を記述し、調査元フォームの kev に
クリップボード 取得,&CP,制御文字変換=しない
を記述することで、ハンドルさえ手に入れば後は調査先フォームオブジェクト
およびプロパティ属性をリスト化できました。

使用している桐は、Ver8 sp6〜7 です。
今後ともよろしく。
21082 Re:返事が遅くなりました。 通りすがり(常駐モード) 2003/06/24-19:17
記事番号21075へのコメント
>次に開くフォームの kev フォーム開始に、
>クリップボード 設定,#STR(&hwindow),制御文字変換=しない
>を記述し、調査元フォームの kev に
>クリップボード 取得,&CP,制御文字変換=しない
>を記述することで、ハンドルさえ手に入れば後は調査先フォームオブジェクト
>およびプロパティ属性をリスト化できました。

というか、みなさんで「不特定のフォーム」をイメージしていました。
ですから、調べたたいフォームがはっきりしており、なおかつKEV記述が可能であれば、
クリップボード・・・・ではなく、単純に変数に入れておいたらどうでしょう?

共通でも固有でもいいので、
&CP (数値型)を宣言し、
&CP=&hwindow
と代入しておき、
調査元フォームでトレースすればいいのでは?


21083 Re:返事が遅くなりました。 うにん 2003/06/24-19:44
記事番号21082へのコメント
>というか、みなさんで「不特定のフォーム」をイメージしていました。

そうですよねえ(^^;

>ですから、調べたたいフォームがはっきりしており、なおかつKEV記述が可能であ
>れば、クリップボード・・・・ではなく、単純に変数に入れておいたらどうでしょう?

御意。
あと、開けるウィンドウが40個までと決まっているので、フォームを開く前と後に
「ウィンドウリスト取得」して比較してみれば、フォームの側に個別に細工しなくても何とかなるかも?
配列関数はちょっと弱いので大変かな。。。

21096 Re:返事が遅くなりました。 MK 2003/06/25-13:56
記事番号21083へのコメント
>>というか、みなさんで「不特定のフォーム」をイメージしていました。
実は不特定なんです。

>>ですから、調べたたいフォームがはっきりしており、なおかつKEV記述が可能であ
>>れば、クリップボード・・・・ではなく、単純に変数に入れておいたらどうでしょう?
言われればそうですねぇ・・・

>あと、開けるウィンドウが40個までと決まっているので、フォームを開く前と後に
>「ウィンドウリスト取得」して比較してみれば、フォームの側に個別に細工しなくても
>何とかなるかも?
その方法がベターかもしれませんね。

開く前に対象フォームを選択しているわけですから、フォーム名やパスが判っていますので、
ハンドル取得後に #フォーム属性(1) で確認すればいいですね。

みなさんのお知恵を有り難く頂戴いたします。ありがとうございます。

戻る