Читаем О чём не пишут в книгах по Delphi полностью

 // тем, что у панели нет неклиентской части, поэтому

 // верхний левый угол окна и верхний левый угол клиентской

 // части совпадают.

Pt:= PanelHole.ScreenToClient(Point(Msg.LParamLo, Msg.LParamHi));

 if Pt.X < BorderMouseSensivity then

 if Pt.Y < CornerMouseSensivity then Msg.Result:= HTTOPLEFT

 else

 if Pt.Y >= PanelHole.Height — CornerMouseSensivity then

Msg.Result:= HTBOTTOMLEFT

 else Msg.Result:= HTLEFT

else

 if Pt.X >= PanelHole.Width — BorderMouseSensivity then

if Pt.Y < CornerMouseSensivity then Msg.Result:= HTTOPRIGHT

 else

 if Pt.Y >= PanelHole.Height — CornerMouseSensivity then

Msg.Result:= HTBOTTOMRIGHT

 else Msg.Result:= HTRIGHT

 else

if Pt.Y < BorderMouseSensivity then

 if Pt.X < CornerMouseSensivity then Msg.Result:= HTTOPLEFT

else

 if Pt.X >= PanelHole.Width — CornerMouseSensivity then

Msg.Result:= HTTOPRIGHT

 else Msg.Result:= HTTOP

else

if Pt.Y >= PanelHole.Height — BorderMouseSensivity then

 if Pt.X < CornerMouseSensivity then

Msg.Result:= HTBOTTOMLEFT

 else

 if Pt.X >= PanelHole.Width — CornerMouseSensivity then

Msg.Result:= HTBOTTOMRIGHT

 else Msg. Result:= HTBOTTOM;

 end

 else if Msg.Msg = WM_SIZE then

 begin

// Пересчитываем регион SetRegion;

// Устанавливаем новые ограничения для размеров окна.

 // учитывающие новое положение дырки

Constraints.MinWidth:=

 Width — ClientWidth + PanelHole.Left + MinHoleSize + HoleDistance;

 Constraints.MinHeight:=

 Height — ClientHeight + PanelHole.Top + MinHoleSize + HoleDistance;

 end

 else if Msg.Msg = WM_SIZING then

 begin

// Копируем переданный прямоугольник в переменную R,

 // одновременно пересчитывая координаты из экранных

 // в клиентские

R.TopLeft:= ScreenToClient(PRect(Msg.LParam)^.TopLeft);

 R.BottomRight:= ScreenToClient(PRect(Msg.LParam)^.BottomRight);

 // Если ширина слишком мала, проверяем, за какую

 // сторону тянет пользователь. Если за левую -

 // корректируем координаты левой стороны, если за

 // правую — ее координаты

 if R.Right — R.Left < MinHoleSize then

 if Msg.WParam in [WMSZ_BOTTOMLEFT, WMSZ_LEFT, WMSZ_TOPLEFT] then

R.Left:= R.Right — MinHoleSize

 else

R.Right:= R.Left + MinHoleSize;

 // Аналогично действуем, если слишком мала высота

 if R.Bottom — R.Top < MinHoleSize then

 if Msg.WParam in [WMSZ_TOP, WMSZ_TOPLEFT, WMSZ_TOPRIGHT] then

R.Top:= R.Bottom — MinHoleSize

 else R.Bottom:= R.Top + MinHoleSize;

 // Сдвигаем стороны, слишком близко подошедшие

 // к границам окна

if R.Left < HoleDistance then R.Left:= HoleDistance;

 if R.Top < HoleDistance then R.Top:= HoleDistance;

 if R.Right > ClientWidth — HoleDistance then

R.Right:= ClientWidth — HoleDistance;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных