2016-07-07 11 views
3

私はいくつかのツールパネルをbsSizeToolWinボーダーのフォームで作っています。私はウィンドウ移動のカスタム処理と、ツールパネルをメインフォームの境界線(ドッキング機能とほとんど同じ)に貼り付ける/整列するカスタムルーチンを持っていますが、 bsSizeToolWin border-style私はボーダーのすべてのコーナー/サイドを持っています。特定のサイジング境界エッジを1つだけ設定するにはどうすればよいですか?

ボーダー側の特定のものを1つだけにすることはできますか? (例えば、ツールパネルがメインフォームの左境界線に貼り付けられた場合、パネルの右境界線のみが必要な場合、メインフォームのクライアント領域の高さに応じてパネルの上部および下部座標が整列し、メインコードの右端に左揃えが貼り付けられます。窓はすべてエッジがかなり描かれ、その後かなりの境界線を持っている場合、デフォルトでフォーム)視覚的観点から

+0

:あるいは

type TMyPanelForm = class(TForm) private fWhichSideCanBeResized: TAlign; procedure WMNCHitTest(var Message: TMessage); message WM_NCHITTEST; end; procedure TMyPanelForm.WMNCHitTest(var Message: TMessage); begin inherited; case fWhichSideCanBeResized of alLeft: begin case Message.Result of HTBOTTOM, HTBOTTOMRIGHT, HTRIGHT, HTTOPRIGHT, HTTOP: Message.Result := HTBORDER; HTBOTTOMLEFT, HTTOPLEFT: Message.Result := HTLEFT; end; end; alRight: begin case Message.Result of HTBOTTOM, HTBOTTOMLEFT, HTLEFT, HTTOPLEFT, HTTOP: Message.Result := HTBORDER; HTBOTTOMRIGHT, HTTOPRIGHT: Message.Result := HTRIGHT; end; end; alTop: begin case Message.Result of HTLEFT, HTBOTTOMLEFT, HTBOTTOM, HTBOTTOMRIGHT, HTRIGHT: Message.Result := HTBORDER; HTTOPLEFT, HTTOPRIGHT: Message.Result := HTTOP; end; end; alBottom: begin case Message.Result of HTLEFT, HTTOPLEFT, HTTOP, HTTOPRIGHT, HTRIGHT: Message.Result := HTBORDER; HTBOTTOMLEFT, HTBOTTOMRIGHT: Message.Result := HTBOTTOM; end; end; end; end; 

:例えば

? – Johan

+0

ドッキングされたフォームでスプリッタを使用しても構いませんが、この場合は使用できません。 –

答えて

関連する問題