掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームのドッキングについて (ID:38880)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
SetParent APIを使えばできます。 メモ帳などのタイトルバーが不要ならSetWindowLong APIを使ってタイトルバーを無しにします。 サイズの調整はSetWindowPos APIをSWP_NOACTIVATEオプションを指定して使います。 こんな感じで。 private { Private 宣言 } F_hWindow: HWND; procedure TForm1.Button1Click(Sender: TObject); var li_Style: Longint; begin F_hWindow := FindWindow('Notepad', nil); if (F_hWindow <> 0) then begin Windows.SetParent(F_hWindow, TabSheet1.Handle); //タイトルバーを無しに li_Style := GetWindowLong(F_hWindow, GWL_STYLE); if ((li_Style and WS_CAPTION) <> 0) then Dec(li_Style, WS_CAPTION); if ((li_Style and WS_THICKFRAME) <> 0) then Dec(li_Style, WS_THICKFRAME); SetWindowLong(F_hWindow, GWL_STYLE, li_Style); PageControl1Resize(nil); end; end; procedure TForm1.PageControl1Resize(Sender: TObject); begin if (F_hWindow <> 0) then begin //メモ帳のサイズをタブシートに合わせる SetWindowPos(F_hWindow, 0, 0, 0, TabSheet1.ClientWidth, TabSheet1.ClientHeight, SWP_NOACTIVATE); end; end; procedure TForm1.Button2Click(Sender: TObject); var li_Style: Longint; begin //メモ帳を元に戻す if (F_hWindow <> 0) then begin //タイトルバーを元に戻す li_Style := GetWindowLong(F_hWindow, GWL_STYLE); li_Style := li_Style or WS_CAPTION or WS_THICKFRAME; SetWindowLong(F_hWindow, GWL_STYLE, li_Style); Windows.SetParent(F_hWindow, GetDesktopWindow); end; F_hWindow := 0; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if (F_hWindow <> 0) then begin Button2Click(nil); end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.