掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数の動的に作成されたSub Formを指定して処理するには? (ID:45926)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
皆様よろしくお願いします。環境はWindows7 Delphi6 Personalです。 SDIブラウザを作成しています。リンクをクリックして自分自身で開くのが難しく https://www.petitmonte.com/bbs/answers?question_id=1833 を参考にして下記のようになりました。 動的に作成されたリンクのサブフォームは後ろに置かないと親が見えなくなりますので 親を最前画面にするコードも見つけてきました。 このプログラムの欠点は、親を削除したらサブフォームも全部削除されることですが、 その前に任意のSub Formを最前面に親から呼び出せないと実用にならないと思います。 「やりたいこと」 親画面から任意のSub Formを指定し最前面に表示させることはできないでしょうか。 作成されるサブフォーム名が全部Form1なので、いろいろ試みましたが挫折。 ●以下コードです、よろしくお願いします。 //------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://www.biccamera.co.jp/shoplist/index.html'); end; //------------------------------- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; //------------------------------ procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); var WND:HWND; begin WND := FindWindow('TForm1', nil); with TForm1.Create(Application) do // 自前の新フォームで begin Top := TForm(TOLEControl(Sender).Parent).Top + 30; Left := TForm(TOLEControl(Sender).Parent).Left + 30; WebBrowser1.RegisterAsBrowser := True; ppDisp := WebBrowser1.DefaultDispatch; Show; // SDIでは Show が必要 end; if Wnd<>0 then begin SetForceForegroundWindow(Wnd);Application.ProcessMessages;end; end; //------------------最前面に出す procedure TForm1.SetForceForegroundWindow(hTarget: HWND); var dwTargetID: DWORD; dwActiveID: DWORD; begin dwTargetID := GetWindowThreadProcessId(hTarget, nil); dwActiveID := GetWindowThreadProcessId(GetForegroundWindow, nil); SetForegroundWindow(hTarget); AttachThreadInput(dwTargetID, dwActiveID, True); BringWindowToTop(hTarget); AttachThreadInput(dwTargetID, dwActiveID, False); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.