Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Ресайзинг и перетаскивание рамкой


Автор: kostas 5.10.2006, 08:50
Всем привет!
Интересует следующий вопрос, как для окна только моего приложения сделать ресайзинг и перетаскивание рамкой, т.е. не отображать содержимое окна при перетаскивании и ресайзинге.

Автор: tigger 5.10.2006, 11:16
Используй это

показать только рамку  
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Ord(false), nil, 0);

показать форму
  SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Ord(true), nil, 0);

Автор: kostas 5.10.2006, 19:49
Большое спасибо!

Автор: Yanis 6.10.2006, 09:37
kostas
Ты видимо задачу решил smile
Но для будующих посещений этого топика менее опытными посетителями нарисовал пример:
Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, CommCtrl, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { Private declarations }
    procedure WMNCLBUTTONDOWN(var M: TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
    procedure WM_MOVING(var M:TMessage); message WM_MOVING;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCLBUTTONDOWN(var M: TWMNCLButtonDown);
begin
  if M.HitTest = HTCAPTION then
    begin
      SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Integer(False), nil, 0);
      M.Result := 0;
    end;

  Inherited;
end;

procedure TForm1.WM_MOVING(var M: TMessage);
begin
  SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Ord(true), nil, 0);
  M.Result := Integer(True);
end;

end.

Автор: dumb 6.10.2006, 10:28
Yanis, лучше WM_ACTIVATE ловить. можно ведь и без мыши двигать/ресайзить, хотя и соглашусь: таким методом почти никто не пользуется.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)