![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Ограничение на изменение размера формы по размеру панели на нейDelphi , Программа и Интерфейс , Размеры и ПоложениеАвтор: Xavier Pacheco { Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira } unit BlueBackFrm; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TBlueBackForm = class(TForm) pnlMain: TPanel; bbtnOK: TBitBtn; bbtnCancel: TBitBtn; procedure FormResize(Sender: TObject); private procedure CenterPanel; { Create a message handler for the WM_WINDOWPOSCHANGING message } procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; end; var BlueBackForm: TBlueBackForm; implementation uses Math; {$R *.DFM} procedure TBlueBackForm.CenterPanel; { This procedure centers the main panel horizontally and vertically inside the form's client area } begin { Center horizontally } if pnlMain.Width < ClientWidth then pnlMain.Left := (ClientWidth - pnlMain.Width) div 2 else pnlMain.Left := 0; { Center vertically } if pnlMain.Height < ClientHeight then pnlMain.Top := (ClientHeight - pnlMain.Height) div 2 else pnlMain.Top := 0; end; procedure TBlueBackForm.WMWindowPosChanging(var Msg: TWMWindowPosChanging); var CaptionHeight: integer; begin { Calculate the caption height } CaptionHeight := GetSystemMetrics(SM_CYCAPTION); { This procedure does not take into account the width and height of the form's frame. You can use GetSystemMetrics() to obtain these values. } // Prevent window from shrinking smaller then MainPanel's width Msg.WindowPos^.cx := Max(Msg.WindowPos^.cx, pnlMain.Width + 20); // Prevent window from shrinking smaller then MainPanel's width Msg.WindowPos^.cy := Max(Msg.WindowPos^.cy, pnlMain.Height + 20 + CaptionHeight); inherited; end; procedure TBlueBackForm.FormResize(Sender: TObject); begin CenterPanel; // Center MainPanel when the form is resized. end; end. Перевод на русский язык: Код-snippet на Delphi предназначен для предотвращения изменения размера формы smaller than ее основной панели. Класс Основной целью этого кода является предотвратить изменение размера формы smaller than ее основной панели. Это можно достичь путем переопределения обработчика сообщения В этом коде, когда форма готовится к изменению размера, она рассчитывает высоту заголовка с помощью функции Вот несколько предложений для улучшения кода:
Вот обновленный код с комментариями и обработкой ошибок:
Обновленный код включает в себя комментарии, обработку ошибок и константы для ширины и высоты границы. Он также использует более читаемый формат процедуры Ограничение на изменение размера формы по размеру панели на ней обеспечивается посредством обработки события WM_WINDOWPOSCHANGING и изменения параметра WindowPos.cx или cy, чтобы форм не уменьшалась до размера панели. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Размеры и Положение ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |