|
Вопрос # 937/ вопрос открыт / |
|
Здравствуйте!
Как сделать форму внутри главной с границами bsSizeToolWin, прилипающую к границам главной формы и неактивизирующуюся при нажатии мышки?
 |
Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 24 сентября 2007, 15:25
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: SMaks
Здравствуйте, Трофимов Евгений! Во первых нужно создать обычно вторую форму с границей bsSizeToolWin. И при показе первой формы установить родитель второй формы и показать ее. Для создания эффекта "липкого окна" можно использовать свойства второй формы ScreenSnap и SnapBuffer. Однако, при таком подходе второе окно будет прилепать только к левой и верхней границам. Если этот факт для вас критичен, то можно вручную отслеживать положение формы и делать окно "липким". Чтобы создать неактивное окно, нужно перекрыть обработчик CreateParams второй формы и добавить парамерт WS_CHILDWINDOW.
Приложение: Переключить в обычный режим- unit1;
- ...
- uses
- ...Unit2;
- ...
- procedure TForm1.FormShow(Sender: TObject);
- begin
- Windows.SetParent(Form2.Handle, Form1.Handle);
- Form2.BorderStyle := bsSizeToolWin;
- Form2.ScreenSnap := true;
- Form2.Show;
- end;
- ...
-
- unit2;
-
- TForm2 = class(TForm)
- ...
- protected
- procedure CreateParams( var Params: TCreateParams ); override;
- ...
- procedure TForm2.CreateParams(var Params: TCreateParams);
- begin
- inherited;
- Params.Style := Params.Style or WS_CHILDWINDOW;
- end;
- ...
 |
Ответ отправил: SMaks (статус: 1-ый класс)
Время отправки: 29 сентября 2007, 17:09
Оценка за ответ: 5
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|