32 Урока Borland Delphi

         

SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER


{меняем стиль окна}
Style:=Style or WS_OVERLAPPEDWINDOW;
SetWindowLong(Button1.Handle, GWL_STYLE, Style);
{обновление окна (Invalidate не сработает)}
SetWindowPos(Button1.Handle, HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER or SWP_DRAWFRAME
or SWP_NOACTIVATE);
end;
Указать свой стиль окна во время его создания можно, если переопределить для любого оконного объекта (включая TForm) процедуру CreateParams:
type
TForm1 = class(TForm)
. . .
procedure CreateParams(var Params:TCreateParams);
override;
. . .
end;
. . .
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style:=Params.Style and not WS_CAPTION;
end;
 
 
IV. Распахивание (maximize) и захлопывание (minimize) окон.
Иногда нужно, чтобы окно при нажатии кнопки “Maximize” распахивалось не на весь экран, а только на часть его. Вспомните редактор исходных текстов в среде Delphi. Эта задача, как и многие другие, решается написанием обработчика соответствующего события - WM_GETMINMAXINFO. Это сообщение посылается системой в окно при максимизации окна или при изменении его размеров с помощью рамки. Окно возвращает требуемые размеры и положение.
TForm1 = class(TForm)
. . .
private
procedure WMGetMinMaxInfo(var M: TWMGetMinMaxInfo);
message WM_GETMINMAXINFO;
. . .
end;
. . .
procedure TForm1.WMGetMinMaxInfo(var M: TWMGetMinMaxInfo);
begin
{на всякий случай}
inherited;
{указываем верхнюю границу окна ниже другого окна}
M.MinMaxInfo^.PTMaxPosition.Y := Form2.Top+Form2.Height;
end;
С помощью обработчика данного события устанавливается не только место и размер распахнутого полностью окна, но и минимальные/максимальные размеры окна при изменении их с помощью рамки. Пример, установка в обработчике события WM_GETMINMAXINFO
m.minmaxinfo^.ptMinTrackSize.y := 100;
m.minmaxinfo^.ptMaxTrackSize.y := 300;
не даст сделать вертикальный размер окна менее 100 и более 300 точек.

1.7 Обработка событий от клавиатуры

I. Эмуляция нажатия клавиши.
Внутри приложения это выполняется достаточно просто с помощью вызова функции Windows API SendMessage() (можно воспользоваться и методом Perform того объекта (или формы), кому посылается сообщение о нажатой клавише).

Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий