Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BorderStyle = bsNone [D7, WinXP]


Sergey77 ©   (2005-01-04 01:13:00) 

Как сделать окно BorderStyle = bsNone изменяемым размеры?


A.S.D.   (2005-01-10 13:18:00) [1]


> Юрий Зотов ©   (04.01.05 02:30) [11]


А вот реализация.

procedure TSizablePopup.WMNCHitTest(var Message: TWMNCHitTest);
var
 P: TPoint;
 R: TRect;
 B: Integer;
begin
 inherited;
 with Message do
   if Result = HTCLIENT then
     Result := HTCAPTION
   else begin
     P := Point(XPos, YPos);
     R := BoundsRect;
     if PtInRect(R, P) then begin

       B := BorderWidth;
       InflateRect(R, -B, -B);

       if not PtInRect(R, P) then begin

         if P.X < R.Left then
           Result := HTLEFT
         else if P.X > R.Right then
           Result := HTRIGHT;

         if P.Y < R.Top then
           if Result = HTLEFT then
             Result := HTTOPLEFT
           else if Result = HTRIGHT then
             Result := HTTOPRIGHT
           else
             Result := HTTOP
         else if P.Y > R.Bottom then
           if Result = HTLEFT then
             Result := HTBOTTOMLEFT
           else if Result = HTRIGHT then
             Result := HTBOTTOMRIGHT
           else
             Result := HTBOTTOM;
       end;

     end; // if PtInRect(R, P)

   end; // with Message do if ... else
end;


Sergey77   (2005-01-04 13:53:00) [2]

Спасибо всем!
Задача такая: пишу прогу по статистике трафика, это окно нужно для отображения информации поверх всех окон, просто без заголовка (он портит вид слегка), окно будет полупрозрачным; отображает график работы, статистику по скоростям, времени и т.д.

Пойду по способу Stilgar_ и Fay; тут все просто получается.


Fay   (2005-01-04 07:32:00) [3]

Я бы сказал
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.Style := Params.Style or WS_SIZEBOX;
end;


Stilgar_   (2005-01-04 03:22:00) [4]

Пароль уже забыл :(
Может быть это то что нужно (взято из kuliba - Советы по Delphi Валентина Озерова):

Для создания окна без заголовка с любым стилем контура сделайте следующее:

Добавьте объявление процедуры

--------------------------------------------------------------------------------
   procedure CreateParams(var Params: TCreateParams); override;

и ее реализацию:

--------------------------------------------------------------------------------
   procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
Style := (Style OR WS_POPUP) AND NOT WS_DLGFRAME;
end;

Установите BorderStyle в bsSizeable.


Юрий Зотов   (2005-01-04 02:30:00) [5]

> Sergey77

Нужно обрабатывать сообщение WM_NCHitTest. Возвращаете правильный результат (тоже описан в справке) - значит, будет правильно меняться и форма курсора. Возможно, что будет правильно меняться даже и реакция системы на мышь.

Но обрабатывать неклиентскую мышь при bsNone все равно придется самому - и вот тут придется помучаться. Поэтому, думаю, лучше идти обратным путем - пусть мышь обрабатывают все же сами форточки, а Вам нужно только подстроить их обработку под свою задачу.

Кстати - а в чем она? Очень похоже, что если мы начнем именно с этого вопроса, то в  итоге как раз и придем к тому, что "есть настройки проще".
:о)


Sergey77   (2005-01-04 02:18:00) [6]

Спасибо!
Это тоже известно - будем двигаться в этом направлении.
надеялся, что есть настройки проще.
все-же спасибо!


Gero   (2005-01-04 02:01:00) [7]


> нужно, чтобы появлялся курсор на краях формы

TForm.OnMouseMove, Screen.Cursor

> увеличивать с помощью мыши

TForm.OnMouseDown, TForm.OnMouseMove, TForm.OnMouseUp, пост [7].

Если что не понятно, то F1 прояснит.


Sergey77   (2005-01-04 01:57:00) [8]

Спасибо!

но ...
программно я знаю.
нужно, чтобы появлялся курсор на краях формы и увеличивать с помощью мыши...


Gero   (2005-01-04 01:44:00) [9]

Можно.

Form.Width := NewWidth;
Form.Height := NewHeight;


Sergey77   (2005-01-04 01:40:00) [10]


> Gero ©   (04.01.05 01:29) [3]
> Хорошо, что понятно.
> Еще вопросы будут?

Еще вопрс: пример  коротенький можно новичку?


Gero   (2005-01-04 01:38:00) [11]


> Sergey77   (04.01.05 01:35)

Я знаком с правилами.


Sergey77   (2005-01-04 01:35:00) [12]

Соблюдайте тематику конференции, сообщения "не в тему" будут просто удаляться! Просто потрепаться вы можете в соответствующей конференции. И просьба, будьте вежливы :)

Еще вопрс: пример  коротенький можно новичку?


Gero   (2005-01-04 01:29:00) [13]

Хорошо, что понятно.
Еще вопросы будут?


Sergey77   (2005-01-04 01:24:00) [14]

понятно, что не ножками


Gero   (2005-01-04 01:22:00) [15]

Ручками.


Наверх

Титульная страница Поиск, карта сайта Написать письмо