Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 937

/ вопрос открыт /

Здравствуйте!
Как сделать форму внутри главной с границами bsSizeToolWin, прилипающую к границам главной формы и неактивизирующуюся при нажатии мышки?

Евгений Eklmn Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 24 сентября 2007, 15:25
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: SMaks

Здравствуйте, Трофимов Евгений! Во первых нужно создать обычно вторую форму с границей bsSizeToolWin. И при показе первой формы установить родитель второй формы и показать ее. Для создания эффекта "липкого окна" можно использовать свойства второй формы ScreenSnap и SnapBuffer. Однако, при таком подходе второе окно будет прилепать только к левой и верхней границам. Если этот факт для вас критичен, то можно вручную отслеживать положение формы и делать окно "липким". Чтобы создать неактивное окно, нужно перекрыть обработчик CreateParams второй формы и добавить парамерт WS_CHILDWINDOW.

Приложение:
  1. unit1;
  2. ...
  3. uses
  4. ...Unit2;
  5. ...
  6. procedure TForm1.FormShow(Sender: TObject);
  7. begin
  8. Windows.SetParent(Form2.Handle, Form1.Handle);
  9. Form2.BorderStyle := bsSizeToolWin;
  10. Form2.ScreenSnap := true;
  11. Form2.Show;
  12. end;
  13. ...
  14.  
  15. unit2;
  16.  
  17. TForm2 = class(TForm)
  18. ...
  19. protected
  20. procedure CreateParams( var Params: TCreateParams ); override;
  21. ...
  22. procedure TForm2.CreateParams(var Params: TCreateParams);
  23. begin
  24. inherited;
  25. Params.Style := Params.Style or WS_CHILDWINDOW;
  26. end;
  27. ...


Ответ отправил: SMaks (статус: 1-ый класс)
Время отправки: 29 сентября 2007, 17:09
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:49
Выполнено за 0.02 сек.